【问题标题】:How can I tell Babel to ignore an es6 import when using the Rollup Babel plugin?使用 Rollup Babel 插件时,如何告诉 Babel 忽略 es6 导入?
【发布时间】:2016-11-13 12:10:28
【问题描述】:

我有什么方法可以告诉 babel 忽略某些导入,例如我不希望 babel 接触任何 es5 导入,例如 polyfill。

我尝试了排除选项,但它没有做任何事情。这是我的开发依赖项:

"devDependencies": {
    "babel-preset-es2015-rollup": "^1.2.0",
    "rollup": "^0.36.3",
    "rollup-plugin-babel": "^2.6.1"
}

这也是我的 index.js 和 cmets 显示我希望 babel 忽略的内容:

/* BABEL DON"T TOUCH THESE PLEASE */
import "parties/promise.js";
import "parties/fetch.js";
import "parties/domtastic.min.js";
/* END BABEL NO TOUCHY */



/* BABEL TRANSPILE THESE */
import "settings/global.js";   
import "settings/tabs.js";
import "modules/helpers.js";
import "modules/modal.js";
import "modules/notify.js";
import "modules/tabs.js";
/* END BABEL TRANSPILE */

我该怎么做?我需要另一个包来处理这个吗?

非常感谢任何帮助,谢谢。

【问题讨论】:

  • 如何编译?似乎它允许编译单个文件:babeljs.io/docs/usage/cli/#compile-files 所以只需编译你想要的文件,不要编译已经是 es5 的文件。或者如果你想编译一个目录,使用 --ignore 并列出所有你想被排除的文件: babel src --out-dir lib --ignore settings/global.js,settings/tabs.js,..,etc
  • 谢谢你,如果我只使用普通的 babel,这种方法就可以了。但是我需要使用汇总来捆绑我的 es6 模块并且忽略似乎没有效果。我使用rollup -c命令编译。
  • 我明白了。我知道您可以使用例如 JSPM,它也可以生成 Rollup 优化构建:jspm.io/0.17-beta-guide/… 或者我建议您从应用程序中删除 polyfill 并将它们包含在 HTML 中,因为您不需要用于 polyfill 的模块系统.
  • 虽然我以 polyfill 为例,但它可以是任何 es5 代码。我想最终得到一个包,而不必通过创建中间文件来分离进程。

标签: javascript ecmascript-6 babeljs es6-modules rollupjs


【解决方案1】:

只需使用 babel 插件的exclude 设置即可:

// rollup.config.js
import babel from 'rollup-plugin-babel';

export default {
  // ...
  plugins: [
    babel({
      exclude: [ 'node_modules/**', 'src/parties/**' ]
    })
  ]
};

【讨论】:

  • 我知道我做了什么,我对 exclude 的使用不正确。非常感谢 Rich!
猜你喜欢
  • 1970-01-01
  • 2018-09-06
  • 1970-01-01
  • 2016-06-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2017-06-23
  • 2021-02-27
相关资源
最近更新 更多