我对webpack相当新,我有一个使用vue cli
的Vue项目。在使用webpack-bundle-analyzer
分析使用vue-cli-service build
构建的生产模式webpack包时,我发现其中一个特定文件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(之前它是dependency,然后我将其更改为devDependency)时,为什么webpack在最终打包中包含自己的依赖项?如果这是正确的行为,请指向任何解释此行为的文档/资源。
crypto
模块或者使用间接导入节点crypto
模块的Node包。这个问题很难解决,因为我无法确定哪个依赖项是造成这个问题的真正原因。我尝试了很多次才最终用适合浏览器端的版本取代了所有需要crypto
的地方。感谢tweetnacl
和jsrsasign
@kjur。 - domoarigato