update
This commit is contained in:
+36
-6
@@ -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
@@ -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) => {
|
||||
|
||||
Reference in New Issue
Block a user