我使用webpack使用target
属性捆绑服务器资产。
这会产生一个可用的客户端捆绑包和一个可用的服务器,它工作得很好。然而,即使对于服务器代码,webpack似乎也在node_modules
内捆绑所有内容。我正在尝试使用webpack-node-externals
来解决此问题,如下所示:
module.exports = [
{
name: "server code, output to ./server",
entry: "./servertest.js",
output: {
filename: "./server/index.js"
},
target: "node",
externals: [
nodeExternals({
includeClientPackages: false
})
]
},
{
name: "client side, output to ./public",
entry: "./app.js",
output: {
filename: "./dist/app.js"
}
}
]
但这并不起作用,因为它的默认行为是从捆绑中排除所有node_modules,从而使服务器无用。有一个白名单选项,我已经包含express
,这是我的小测试用例的唯一依赖项。它在表达时不会失败,但它在表达式merge-descriptors
的依赖性上失败了。当然,如果我将合并描述符添加到白名单,尝试启动服务器将失败的另一个依赖的快递。我肯定无法将每个依赖项和子依赖项(等等)添加到此白名单数组中。
require
构建期间确保webpack捆绑给定target: 'node'
的所有依赖项?