1. 安装官方包
core-js@3 是目前最新稳定版,regenerator-runtime 处理生成器函数
npm install --save core-js@3 regenerator-runtime --legacy-peer-deps
2. 配置 Babel(关键:让垫片生效)
找到项目根目录的 babel.config.js(或 .babelrc),修改配置,指定 core-js 版本和垫片方式
// 按需组装插件(保留你原有JSX、生产删console的逻辑)
const plugins = [
'@vue/babel-plugin-transform-vue-jsx',
'@vue/babel-plugin-jsx'
]
// 生产环境自动添加移除控制台插件
if (process.env.VUE_APP_ENV === 'prod') {
plugins.push('transform-remove-console')
}
module.exports = {
compact: false,
plugins: plugins, // 直接使用组装好的插件数组
presets: [
[
'@vue/cli-plugin-babel/preset', // 保留Vue CLI原生preset(核心,不能删)
{
// 配置core-js垫片(替代babel-polyfill的核心配置)
useBuiltIns: 'entry', // 强力模式:注入所有缺失特性的补丁
corejs: 3, // 对应安装的core-js@3版本
targets: { // 可选:按需兼容,Vue CLI会有默认值,可根据项目修改
chrome: '50',
firefox: '50',
ie: '11',
safari: '10',
android: '5'
}
}
]
]
}
3. 全局引入 regenerator-runtime(处理 async/await)
找到项目的入口文件 (一般是 src/main.js / src/main.ts),在第一行引入:
// main.js / main.ts 顶部
import 'core-js/stable'
import 'regenerator-runtime/runtime'
import Vue from 'vue'
import App from './App.vue'
// ... 其他代码
我生产遇到的问题
我是webpack打包,vue.config.js 中externals中打包到js中,设备识别不了语法
externals: {
// vue: 'Vue',
// 'lottie-web': 'lottie'
},