This commit is contained in:
2022-07-18 02:50:52 +00:00
parent befd344ab0
commit 06181b34d6
8569 changed files with 818704 additions and 352705 deletions
+36 -6
View File
@@ -4,19 +4,27 @@ const coreJsMeta = {
es6: 'es6',
es7: 'es7'
},
builtIns: '@babel/compat-data/corejs2-built-ins'
builtIns: require.resolve('@babel/compat-data/corejs2-built-ins')
},
3: {
prefixes: {
es6: 'es',
es7: 'es'
},
builtIns: 'core-js-compat/data'
builtIns: require.resolve('core-js-compat/data')
}
}
function getMajorVersion (version) {
if (typeof version === 'number') {
return Math.floor(version)
} else {
return Number(version.split('.')[0])
}
}
function getDefaultPolyfills (corejs) {
const { prefixes: { es6, es7 } } = coreJsMeta[corejs.version]
const { prefixes: { es6, es7 } } = coreJsMeta[getMajorVersion(corejs.version)]
return [
// Promise polyfill alone doesn't work in IE,
// Needs this as well. see: #1642
@@ -33,7 +41,7 @@ function getDefaultPolyfills (corejs) {
function getPolyfills (targets, includes, { ignoreBrowserslistConfig, configPath, corejs }) {
const { default: getTargets, isRequired } = require('@babel/helper-compilation-targets')
const builtInsList = require(coreJsMeta[corejs.version].builtIns)
const builtInsList = require(coreJsMeta[getMajorVersion(corejs.version)].builtIns)
const builtInTargets = getTargets(targets, {
ignoreBrowserslistConfig,
configPath
@@ -79,6 +87,10 @@ module.exports = (api, options = {}) => {
corejs = { version: Number(corejs) }
}
if (corejs.proposals === undefined) {
corejs.proposals = true
}
const defaultTargets = {
server: { node: 'current' },
client: { ie: 9 },
@@ -123,7 +135,16 @@ module.exports = (api, options = {}) => {
ignoreBrowserslistConfig,
configPath,
include,
exclude: polyfills.concat(exclude || []),
exclude: [
...exclude || [],
...polyfills,
// Although preset-env includes class-properties
// but webpack 4 doesn't support the syntax when target supports and babel transpilation is skipped
// https://github.com/webpack/webpack/issues/9708
'@babel/plugin-proposal-class-properties',
'@babel/plugin-proposal-private-methods',
'@babel/plugin-proposal-private-property-in-object'
],
shippedProposals,
forceAllTransforms
}
@@ -139,7 +160,10 @@ module.exports = (api, options = {}) => {
decoratorsBeforeExport,
legacy: decoratorsLegacy !== false
}],
[require('@babel/plugin-proposal-class-properties'), { loose: true }]
// class-properties and private-methods need same loose value
[require('@babel/plugin-proposal-class-properties'), { loose: true }],
[require('@babel/plugin-proposal-private-methods'), { loose: true }],
[require('@babel/plugin-proposal-private-property-in-object'), { loose: true }]
)
// Transform runtime, but only for helpers
@@ -151,6 +175,12 @@ module.exports = (api, options = {}) => {
absoluteRuntime
}])
// https://github.com/nuxt/nuxt.js/issues/7722
if (envName === 'server') {
plugins.push(require('@babel/plugin-proposal-optional-chaining'))
plugins.push(require('@babel/plugin-proposal-nullish-coalescing-operator'))
}
return {
sourceType: 'unambiguous',
presets,
+14 -1
View File
@@ -1,4 +1,18 @@
// Add polyfill imports to the first file encountered.
const { addSideEffect } = require('@babel/helper-module-imports')
const modulePathMap = {
'regenerator-runtime': 'regenerator-runtime/runtime.js'
}
function getModulePath (mod) {
return modulePathMap[mod] || 'core-js/modules/' + mod + '.js'
}
function createImport (path, mod) {
return addSideEffect(path, getModulePath(mod))
}
module.exports = ({ types }) => {
let entryFile
return {
@@ -12,7 +26,6 @@ module.exports = ({ types }) => {
}
const { polyfills } = state.opts
const { createImport } = require('@babel/preset-env/lib/utils')
// Imports are injected in reverse order
polyfills.slice().reverse().forEach((p) => {