Javascript 捆绑Node.js的CommonJS文件

Javascript 捆绑Node.js的CommonJS文件,javascript,node.js,babeljs,commonjs,rollupjs,Javascript,Node.js,Babeljs,Commonjs,Rollupjs,我有一个Node.js应用程序,所有模块都是用CommonJS编写的,有些模块使用es6功能,如Generator、let、const等,这些都可以正常工作 我想把所有这些文件打包成一个文件,然后再把它弄脏。我对必要步骤的最佳猜测是: 1) 使用Babel将所有模块转换为es6模块 2) 使用rollup创建捆绑包并将其输出为CJS文件。 3) 丑化这个CJS文件 我曾经玩过rollup&babel,读过一些文章,比如如果输入模块已经是es6模块,那么哪种方法可以很好地工作。我已经看过了,但由于

我有一个Node.js应用程序,所有模块都是用CommonJS编写的,有些模块使用es6功能,如Generator、let、const等,这些都可以正常工作

我想把所有这些文件打包成一个文件,然后再把它弄脏。我对必要步骤的最佳猜测是: 1) 使用Babel将所有模块转换为es6模块 2) 使用rollup创建捆绑包并将其输出为CJS文件。 3) 丑化这个CJS文件


我曾经玩过rollup&babel,读过一些文章,比如如果输入模块已经是es6模块,那么哪种方法可以很好地工作。我已经看过了,但由于我在babel、rollup等方面没有太多经验,所以我一直在挣扎。

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

为什么不首先编写ES6模块呢?这样一来,你的应用程序就更加经得起未来的考验,捆绑销售的表现也将更加可预测


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

这在babel 5中是可能的,但由于babel 6,您需要一个插件来为CommonJS模块使用普通的
require('module')
,而不是“new”
require('module')).默认值


这里是babel插件:

谢谢Rich。我目前有31个CJS格式的文件,我不愿意花时间和精力重构成es6模块(但可能不得不)。对于新代码,我正在编写es6模块,在几个月前从Require.js切换到JSPM/System.js并爱上它之后,我开始在浏览器中使用JSPM/System.js。我将看看esnext,这可能是目前一个足够好的解决方案。我也会看看网页。希望有一天我们能在node.js中获得本机es6模块支持。谢谢,但我不认为这有助于我将cjs转换为es6模块。您无需转换任何东西即可使其正常工作