webpack 不捆绑节点模块

webpack doesn't bundle node modules

我想从 node_modules 中获取一个模块并且我想将它捆绑(用于测试目的),但是 Webpack 的行为就像它被添加到外部一样。

// no externals or any plugin used
let config = {
    mode: 'none',
    target: 'node',
    entry: {
      output: `/example.js`,
    },
    resolve: {
      extensions: ['.js'],
    },
    output: {
      path: './dist',
    },
  };
// exampl.js
require('path')
// dist/output.js
require('path');

预期行为

要捆绑的节点模块path

实际行为

Webpack 保留 require('path');

这是设计使然。当你在 webpack config 中设置 target: 'node' 时,webpack 将不会捆绑 Node.js 的内置模块。 path是Node.js的内置模块,不是来自node_modules目录。

using node webpack will compile for usage in a Node.js-like environment (uses Node.js require to load chunks and not touch any built in modules like fs or path).

targets