Node.js需要webpacked模块

时间:2018-04-14 16:34:54

标签: javascript node.js npm webpack node-modules

我试图摆脱你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%。

1 个答案:

答案 0 :(得分:1)

使用当前node配置对象并设置fs: 'empty'的问题是它将为这些模块提供空对象。有关Webpack Node here的更多信息。

您可以将Webpack target属性设置为'node'

  

在类似Node.js的环境中编译使用(使用Node.js require加载块而不触及任何内置模块,如fspath

module.exports = {
  target: 'node'
};

详细了解Webpack Targets

此外,要导入内置模块,请使用__non_webpack_require__

  

生成一个未被webpack解析的require函数