【发布时间】:2023-03-14 12:40:02
【问题描述】:
我是 webpack 的新手,我有一个使用 vue cli 的 Vue 项目。在使用webpack-bundle-analyzer 分析webpack 包(使用vue-cli-service build 在生产模式下构建)时,我发现一个特定文件bn.js 被多次包含在包中。运行npm ls bn.js时发现它的父依赖是webpack本身。
`-- webpack@4.44.1
`-- node-libs-browser@2.2.1
`-- crypto-browserify@3.12.0
+-- browserify-sign@4.2.1
| +-- bn.js@5.1.3
| +-- browserify-rsa@4.0.1
| | `-- bn.js@4.11.9
| +-- elliptic@6.5.3
| | `-- bn.js@4.11.9
| `-- parse-asn1@5.1.6
| `-- asn1.js@5.4.1
| `-- bn.js@4.11.9
+-- create-ecdh@4.0.4
| `-- bn.js@4.11.9
+-- diffie-hellman@5.0.3
| +-- bn.js@4.11.9
| `-- miller-rabin@4.0.1
| `-- bn.js@4.11.9
`-- public-encrypt@4.0.3
`-- bn.js@4.11.9
所以我的问题是,为什么在项目中将 webpack 作为 devDependency 添加(之前它是一个依赖项,然后我将其更改为 devDepenency)时,webpack 在最终包中包含它自己的依赖项?
或者,如果这是正确的行为,请指出任何解释此行为的文档/资源。
【问题讨论】:
-
我遇到了这个问题,因为直接导入 -- 以及使用间接导入的节点包 -- 节点
crypto模块。摆脱它是一只熊,因为我并没有真正找到一种方法来追踪哪个依赖是负责任的。这是一个错误的尝试。最终我用浏览器友好的版本替换了所有需要crypto的东西。感谢tweetnacl和jsrsasign@kjur
标签: javascript vue.js npm webpack webpack-bundle-analyzer