我试图摆脱你module.exports = {
lodash : require('lodash'),
colors : require('colors'),
test : require('test'),
abc : require('abc')
} ;
各种模块有自己的依赖关系后得到的一千个文件。
因此我想仅使用 webpack 将编译成一个javascript文件(以及其他所需资源),然后以这种方式将其加载到Node.js项目中:
入口点,将通过webpack编译为捆绑。
var { lodash, colors, test, abc } = require('./lib/bundle') ;
主要
fs
我遇到的问题是某些模块需要系统(或不可编译)模块,例如webpack.config.js
,而webpack会尝试将它们捆绑到一起。
您只需在node: {
fs : "empty",
electron : "empty"
}
文件中指定:
require('fs')
但是,一旦打包到捆绑包中,由于此设置,似乎每个Object.freeze({})
都被fs
替换,然后模块使用yarn autoclean --force
失败。
有没有人在Node.js项目中使用压缩模块的解决方案?
PS:我尝试使用纱线和{{1}}删除所有不必要的文件,但它只删除了总数的5%到10%。
答案 0 :(得分:1)
使用当前node
配置对象并设置fs: 'empty'
的问题是它将为这些模块提供空对象。有关Webpack Node here的更多信息。
您可以将Webpack target
属性设置为'node'
在类似Node.js的环境中编译使用(使用Node.js
require
加载块而不触及任何内置模块,如fs
或path
)
module.exports = {
target: 'node'
};
详细了解Webpack Targets
此外,要导入内置模块,请使用__non_webpack_require__
生成一个未被webpack解析的
require
函数