webpack能输出单独的浏览器和节点的脚本和模块文件吗?
我正在使用webpack来创build一个可以被浏览器加载的JavaScript对象(在一个脚本标签中),但是我也想让webpack创build一个可以被node加载的模块(它需要module.exports =
)。
有没有办法让webpack做两个文件; 例如一个project.js
和project.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.js
将libraryTarget
设置为commonjs2
以便节点可以加载它。
我把my.project.node.js放在package.json
main
,这样webpack就可以加载它了,如下所示:
{ "name": "my_project", "version": "1.0.0", "description": "something ...", "main": "my_project.node.js", ... }