2017-02-27 143 views
6

webpack-bundle-analyzer显示我的vendor.js中包含的elliptic和bn.js 但是这些模块未用于代码中或包含在package.json中。为什么webpack在我的包中包含椭圆bn.js模块

NPM LS bn.js给出:

├─┬ [email protected] 
│ └─┬ [email protected] 
│ └─┬ [email protected] 
│  └─┬ [email protected] 
│  └── [email protected] 
+0

这是因为包含使用加密模块的randomstring模块而发生的。如果在前端代码中使用加密模块,则所有加密函数都包含在前端js包中。 –

+0

你能告诉我如何处理这个问题吗?因为这导致我的整体包大小比webpack 1大(其中不包括椭圆和bn.js)。 –

回答

1

的WebPack包括,如果你在你的代码导入crypto作为一个依赖地方ellipticbn.js组合中的(和其他更小的模块)。

为了避免这些巨大的依赖,你可以找一个具体的NPM模块,提供只是功能(先进而精湛),你需要

例如,我正在导入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压缩包大小(但YMMV取决于您使用哪种加密方法)调整为150Kb。