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

标签 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

最佳答案

如果您将 crypto 作为依赖项导入到某个位置,Webpack 会在您的包中包含 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 压缩包大小减少了 150Kb(但 YMMV 取决于您使用的加密方法)。

关于reactjs - 为什么 webpack 在我的包中包含椭圆 bn.js 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42492410/

相关文章:

javascript - 尝试制作 polyfill 时,typescript linter 会触发错误

javascript - 似乎无法让 babel 和 webpack 为 ES2015 工作,出现导入错误

javascript - 如何在 React 中没有更新函数的情况下更新我的状态数组

javascript - react : How to test component's input which uses ref?

reactjs - 在 babel/webpack 中编译时评估条件

typescript - 在 Webpack 5 : SyntaxError: Cannot use import statement outside a module 中用 Typescript 编写的 Web Worker

javascript - X-WP-Nonce == Cookie 随机数无效

javascript - 插件/预设文件不允许导出对象,只能导出函数。删除并保留 babel 安装?使用 webpack 选择?

reactjs - netlify 部署 : Failed during stage 'building site' : Build script returned non-zero exit code: 2

javascript - 使用 webpack 将 html 文件中的图像复制到输出目录