const presets = [ ['@babel/env', { // chrome, opera, edge, firefox, safari, ie, ios, android, node, electron // targets 和 browerslist 合併取最低版本 targets: { ie: 8, // 是否使用 esmodules esmodules: true, }, // 啓用更符合規範的轉換,但速度會更慢,默認爲 `false`,從目前來看,是更嚴格的轉化,包括一些代碼檢查。 spec: false, // 有兩種模式:normal, loose。其中 normal 更接近 es6 loose 更接近 es5 loose: false, // "amd" | "umd" | "systemjs" | "commonjs" | "cjs" | false, defaults to "commonjs" modules: false, // 打印插件使用狀況 debug: true, // 按需增長移除一些功能 // include: [], // exclude: [], // 增長 polyfills // 按需使用 // useBuiltIns: 'usage', // 引用一次 // useBuiltIns: 'entry', // 不引用,獨自使用 // useBuiltIns: false, // 強制使用全部的插件 // forceAllTransforms: false, // 配置 browerslist 的位置 // configPath: , // 配置是否忽略 browerslist 文件 // ignoreBrowserslistConfig: false, // 是否跳過 proposal 的文件 // shippedProposals: false, }] ]; const plugins = [ [ // 重用把 babel 注入的幫助代碼, 依賴 @babel/runtime "@babel/plugin-transform-runtime", { // false || 2, 變成全局或者局部 "corejs": false, // 生成器運行時的使用,變成全局或者局部 "regenerator": true, // 幫助函數是變成 inline, 仍是 lib "helpers": true, // helpers 切換成 esm "useESModules": true } ] ]; module.exports = { presets, plugins };
詳細的代碼在: githubnode