We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
日常业务可以只用@babel/preset-env(提供语法转译,也提供全局的原型链的polyfill) useBuiltIns:false,即关闭polyfill
库模式使用@babel/plugin-transform-runtime (提供局部、按需加载的polyfill)
参考文章
已经在 @babel/preset-env 中配置了polyfill,那么你连 @babel/plugin-transform-runtime 都是不必要的(他们二者都可以提供ES新API的垫片,在这一项功能上是重复的。@babel/preset-env 除了提供 polyfill 垫片,还提供 ES 新语法的转译,这一点 @babel/plugin-transform-runtime 做不了;@babel/preset-env 提供的polyfill垫片会污染原型链,这个既是缺点,也是优点,缺点是在开发第三方 JS 库时不能这么干,会影响使用方的代码,优点是在开发自己的web应用时,一劳永逸,而 @babel/plugin-transform-runtime 不会污染原型链,且按需加载;@babel/preset-env 在提供 polyfill 垫片时,是既可以按需也可以不按需,取决于使用者怎么配置 useBuiltIns 参数及是否 import 了垫片),简单推荐一下:@babel/preset-env 可以搞定你的所有事情,配置 useBuiltIns 并按规则导入 polyfill,不必使用 @babel/plugin-transform-runtime;如果是开发 js 库,才用 @babel/plugin-transform-runtime,同时使用 @babel/preset-env 去转译语法,但不用它的 polyfill(如这篇文章里推荐的那样去配置即可)
import { defineConfig } from 'vite' import vue2 from '@vitejs/plugin-vue2' import { getBabelOutputPlugin } from '@rollup/plugin-babel' // https://vitejs.dev/config/ export default defineConfig(() => ({ resolve: { extensions: ['.vue', '.js', '.jsx', '.ts', '.tsx', '.cjs', '.mjs'] }, plugins: [ vue2() ], build: { rollupOptions: { external: [ // 要将@babel/runtime-core的依赖包排除掉 // 并将@babel/runtime-corejs3声明到dependencies中 /@babel\/runtime-core/ ], plugins: [ getBabelOutputPlugin({ babelrc: false, configFile: false, // 不加载外部的 babel 配置 presets: [ [ '@babel/preset-env', { targets: { browsers: ['last 2 versions', 'ie >= 11'] }, // 用了@babel/plugin-transform-runtime // 就不要用preset-env来处理polyfill useBuiltIns: false, // 此选项配置 @babel/preset-env 如何处理 polyfill // 不用转 modules: false // 启用将 ES 模块语法转换为另一种模块类型 } ] ], plugins: [ [ '@babel/plugin-transform-runtime', { corejs: { version: 3, proposals: true // 是否加入polyfill提案 }, helpers: true, // 切换内联 Babel 助手(classCallCheck、extends 等)是否替换为对 moduleName 的调用。 // 切换生成器函数是否转换为使用不污染全局作用域的再生器运行时。 regenerator: true // defaults to true } ] ] }) ] } } }))
{ "dependencies": { "@babel/runtime-corejs3": "^7.24.0" }, "devDependencies": { "@babel/plugin-transform-runtime": "^7.24.0", "@babel/preset-env": "^7.24.0", "@rollup/plugin-babel": "^6.0.4" } }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
日常业务可以只用@babel/preset-env(提供语法转译,也提供全局的原型链的polyfill)
useBuiltIns:false,即关闭polyfill
库模式使用@babel/plugin-transform-runtime (提供局部、按需加载的polyfill)
参考文章
The text was updated successfully, but these errors were encountered: