为什么webpack在我的包中包含了椭圆形的bn.js模块

时间:2017-02-27 17:46:30

标签: reactjs webpack

webpack-bundle-analyzer显示我的vendor.js中包含的elliptic和bn.js 但这些模块不在代码中使用或包含在package.json中。

npm ls bn.js给出:

├─┬ eslint-import-resolver-webpack@0.8.1
│ └─┬ node-libs-browser@1.1.1
│   └─┬ crypto-browserify@3.11.0
│     └─┬ browserify-sign@4.0.0
│       └── bn.js@4.11.6

2 个答案:

答案 0 :(得分:3)

如果您在代码中的某处将elliptic作为依赖项导入,则Webpack中包含bn.jscrypto(以及其他较小的模块)。

为了避免这些巨大的依赖关系,你可以寻找一个特定的npm模块,它提供你需要的功能(ality)

例如,我正在导入crypto来执行;

const crypto = require('crypto');
const hmac = crypto.createHmac('sha1', buf);

...而是(在这种情况下......),您可以安装create-hmac module,并执行;

const createHmac = require('create-hmac');
const hmac = createHmac('sha1', buf);

如果你需要一些动力;删除crypto作为依赖性从我们的gzip压缩包大小减去150Kb(但YMMV取决于您正在使用的加密方法)。

答案 1 :(得分:-2)

这些是您的依赖项的依赖项。例如source