webpack能输出单独的浏览器和节点的脚本和模块文件吗?

我正在使用webpack来创build一个可以被浏览器加载的JavaScript对象(在一个脚本标签中),但是我也想让webpack创build一个可以被node加载的模块(它需要module.exports = )。

有没有办法让webpack做两个文件; 例如一个project.jsproject.node.js ? 或者我正在做这个错误的方式?

D3 JavaScript库似乎正在做这样的基于它的package.json

 { "main": "build/d3.node.js", "browser": "build/d3.js", ... } 

我发现如何让webpack在这里创build多个文件 – 基本上只是导出一个对象数组,而不是仅仅在webpack.config.js导出一个。

下面是我使用相同的入口点main.js制作多个文件的main.js

 module.exports = [ { entry: './src/main.js', output: { path: __dirname, filename: 'my_project.js', libraryTarget: 'var', library: 'my_project' }, ... }, { entry: './src/main.js', output: { path: __dirname, filename: 'my_project.node.js', libraryTarget: 'commonjs2', library: 'my_project' } ... ]; 

我创build了两个文件:1)将libraryTarget设置为var my_project.js ,以便可以使用脚本标记将其加载到浏览器中; 2) my_project.node.jslibraryTarget设置为commonjs2以便节点可以加载它。

我把my.project.node.js放在package.json main ,这样webpack就可以加载它了,如下所示:

 { "name": "my_project", "version": "1.0.0", "description": "something ...", "main": "my_project.node.js", ... }