我有一个同构模块,我想在一个文件中发布。
使用webpack构建Web是微不足道的。但是,对于target: 'node'
,我希望不在输出中包含任何依赖项,因为它们会保留在package.json
中,并且应该可以使用标准require
。
有没有办法告诉webpack挂钩只需要在源目录中,但是保持其他需求(例如require('lodash')
)不受影响?
解决方法我发现使用externals
并将一些require
d模块注入输出文件:
// webpack.config
const externals =
_(fs.readdirSync('node_modules'))
.reject(s => /^\./.test(s))
.keyBy().mapValues((v, k) => _.camelCase(v))
.value()
module.exports = {
...
externals,
...
}
// output file, assuming I'm injecting externals somehow:
Object.keys(externals).forEach(function (name) {
try {
global[externals[name]] = require(name)
} catch (e) {
}
})