3

我有一个 Node.js 应用程序,其中所有模块都是用 CommonJS 编写的,还有一些使用 es6 功能,例如生成器、let、const 等。这一切都可以正常工作。

我想将所有这些文件捆绑到一个文件中,然后对其进行 uglify。我对必要步骤的最佳猜测是:1)将所有模块转换为 es6 模块 - 使用 Babel 2)使用汇总创建包并将其输出为 CJS 文件。3) 丑化这个 CJS 文件。

我玩过 rollup 和 babel 并阅读过诸如https://duske.me/easy-es2015-compilation-with-rollup-js-and-gulp-js/之类的文章,如果输入模块已经是 es6模块。而且我查看了https://github.com/rollup/rollup-plugin-babel,但由于我对 babel、rollup 等方面没有太多经验,因此陷入困境。

4

2 回答 2

1

我不会尝试将 CommonJS 模块转换为 ES6。可以做到(esnext可能是你最好的选择——我不相信 Babel 有从 CommonJS 到 ES6 的插件),但你可能会遇到一些粗糙的边缘,CommonJS 的语义与 ES6 的语义不太匹配模块。

为什么不首先编写 ES6 模块呢?这样一来,您的应用程序就更具前瞻性,并且捆绑的行为将更加可预测。

如果这不是一个选项,并且您的源文件需要是 CommonJS,那么您最好使用 CommonJS 捆绑器,例如 Webpack 或 Browserify。

于 2016-04-28T11:31:47.473 回答
0

这在 babel 5 中是可能的,但是从 babel 6 开始,你需要一个插件来使用普通require('module')的 CommonJS 模块而不是“new”require('module').default

这是 babel 插件:https ://www.npmjs.com/package/babel-plugin-add-module-exports

于 2016-04-28T11:34:45.887 回答