From c8cecffedbf7b19cf930bb2821b5c352bc716a67 Mon Sep 17 00:00:00 2001 From: Haoqun Jiang Date: Mon, 3 Feb 2020 19:52:43 +0800 Subject: [PATCH] refactor: remove usage of deprecated babel functions, preparing for babel 8 (#5133) * refactor: use babel.loadPartialConfigSync (added in babel 7.8) As planned in https://github.com/babel/babel/issues/10746, in babel 8 the old `loadPartialConfig` can't be used synchronously. * refactor: remove dependence on internal babel files, preparing for babel 8 See https://github.com/babel/babel/issues/10746 https://github.com/babel/babel/pull/10899 --- packages/@vue/babel-preset-app/index.js | 19 +++++++++---------- packages/@vue/babel-preset-app/package.json | 1 + packages/@vue/cli-plugin-babel/index.js | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/@vue/babel-preset-app/index.js b/packages/@vue/babel-preset-app/index.js index 10a15351a5..7a28110013 100644 --- a/packages/@vue/babel-preset-app/index.js +++ b/packages/@vue/babel-preset-app/index.js @@ -14,17 +14,16 @@ const defaultPolyfills = [ ] function getPolyfills (targets, includes, { ignoreBrowserslistConfig, configPath }) { - const { isPluginRequired } = require('@babel/preset-env') - const builtInsList = require('core-js-compat/data') - const getTargets = require('@babel/preset-env/lib/targets-parser').default - const builtInTargets = getTargets(targets, { - ignoreBrowserslistConfig, - configPath - }) + const getTargets = require('@babel/helper-compilation-targets').default + const builtInTargets = getTargets(targets, { ignoreBrowserslistConfig, configPath }) + + // if no targets specified, include all default polyfills + if (!targets && !Object.keys(builtInTargets).length) { + return includes + } - return includes.filter(item => { - return isPluginRequired(builtInTargets, builtInsList[item]) - }) + const { list } = require('core-js-compat')({ targets: builtInTargets }) + return includes.filter(item => list.includes(item)) } module.exports = (context, options = {}) => { diff --git a/packages/@vue/babel-preset-app/package.json b/packages/@vue/babel-preset-app/package.json index 8da2a1b2cd..5734adcc3c 100644 --- a/packages/@vue/babel-preset-app/package.json +++ b/packages/@vue/babel-preset-app/package.json @@ -23,6 +23,7 @@ "homepage": "https://github.com/vuejs/vue-cli/tree/dev/packages/@vue/babel-preset-app#readme", "dependencies": { "@babel/core": "^7.8.4", + "@babel/helper-compilation-targets": "^7.8.4", "@babel/helper-module-imports": "^7.8.3", "@babel/plugin-proposal-class-properties": "^7.8.3", "@babel/plugin-proposal-decorators": "^7.8.3", diff --git a/packages/@vue/cli-plugin-babel/index.js b/packages/@vue/cli-plugin-babel/index.js index e25298a729..e1e3f8e76f 100644 --- a/packages/@vue/cli-plugin-babel/index.js +++ b/packages/@vue/cli-plugin-babel/index.js @@ -26,7 +26,7 @@ module.exports = (api, options) => { // there will be a VUE_CLI_TRANSPILE_BABEL_RUNTIME env var set. // the `filename` field is required // in case there're filename-related options like `ignore` in the user config - babel.loadPartialConfig({ filename: api.resolve('src/main.js') }) + babel.loadPartialConfigSync({ filename: api.resolve('src/main.js') }) api.chainWebpack(webpackConfig => { webpackConfig.resolveLoader.modules.prepend(path.join(__dirname, 'node_modules'))