如何使用 Webpack 作为"节点"目标打包没有依赖的模块?



我有一个同构模块,我想在单个文件中发布。

使用 webpack 构建 Web 是微不足道的。但是,对于target: 'node',我不希望在输出中包含任何依赖项,因为它们保留在package.json中并且应该与标准require一起使用。

有没有办法告诉 webpack 只在源目录中钩接到 require,而保留其他需求(例如 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) {
  }
})
  • 显然外部可以获得功能和配置选项更富有
  • https://github.com/liady/webpack-node-externals 正是我需要

最新更新