javascript - 汇总 + @babel/preset-env + @babel/polyfill

标签 javascript babeljs rollup babel-polyfill babel-preset-env

当使用 Rollup 时,如何让它与 @babel/preset-env@babel/polyfill 一起工作?提到添加 useBuiltIns: 'usage' 的文档但是当我这样做时,我在控制台中收到 require is not defined 错误。以下是我目前所拥有的;有没有更推荐的设置?

rollup.config.js:

import babel from 'rollup-plugin-babel';
import resolve from 'rollup-plugin-node-resolve';
import { terser } from 'rollup-plugin-terser';

const dist = './dist/';
const name = 'focusoverlay';

export default {
  input: './src/index.js',
  output: [
    {
      file: `${dist}${name}.cjs.js`,
      format: 'cjs'
    },
    {
      file: `${dist}${name}.esm.js`,
      format: 'esm'
    },
    {
      name: 'FocusOverlay',
      file: `${dist}${name}.js`,
      format: 'umd'
    }
  ],
  plugins: [
      resolve(),
      babel({ exclude: 'node_modules/**' }),
      terser()
  ]
};

.babelrc:

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "useBuiltIns": "usage",
        "modules": false,
        "targets": {
          "browsers": "> 0.25%, not op_mini all, not dead, IE 10-11",
          "node": 6
        }
      }
    ]
  ]
}

最佳答案

我通过删除我的 .babelrc 文件并将我的 babel 配置完全移动到 rollup.config.js 来解决这个问题。然后我还包含了 rollup-plugin-commonjs 插件来将 CJS 模块转换为 ES6。我的最终配置示例:

import babel from 'rollup-plugin-babel';
import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import { terser } from 'rollup-plugin-terser';

const dist = './dist/';
const name = 'focusoverlay';

export default {
  input: './src/index.js',
  output: [
    {
      file: `${dist}${name}.cjs.js`,
      format: 'cjs'
    },
    {
      file: `${dist}${name}.esm.js`,
      format: 'esm'
    },
    {
      name: 'FocusOverlay',
      file: `${dist}${name}.js`,
      format: 'umd'
    }
  ],
  plugins: [
      resolve(),
      babel({
        exclude: 'node_modules/**',
        presets: [
          [
            '@babel/env',
            {
              modules: 'false',
              targets: {
                browsers: '> 1%, IE 11, not op_mini all, not dead',
                node: 8
              },
              useBuiltIns: 'usage'
            }
          ]
        ]
      }),
      commonjs(),
      terser()
  ]
};

完整配置here .当然,仍然欢迎提出改进建议。

关于javascript - 汇总 + @babel/preset-env + @babel/polyfill,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55112048/

相关文章:

node.js - 如何将rollup中的所有 Node 模块设置为外部?

javascript - 如何使用 Firebase 实现 Steam 身份验证?

javascript - 选中复选框时使用javascript和html显示图像

node.js - 如何在 Express 中使用转译的 ES6 代码实例化对象?

javascript - Webpack 2.4.1 中的无效配置对象错误

javascript - 支持旧浏览器与 terser + rollup 吗?

javascript - 正则表达式:如何匹配后面没有任何字符但允许空格后的字符的数字?

javascript - 我可以将 x-template 脚本导入 HTML 文件吗?

javascript - Webpack + Babel 在 Stack Trace 中错误的行号

SQL ROLLUP 与 COALESCE