I am fairly new to webpack and I have a Vue project using the vue cli
. While analyzing the webpack bundle (built in production mode using vue-cli-service build
) using webpack-bundle-analyzer
, I found that one particular file bn.js
is being included multiple times in the bundle. When running npm ls bn.js
I found that it's parent dependency is webpack
itself.
`-- 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
So my question is that why is webpack including it's own dependencies in the final bundle when webpack is added as a devDependency (earlier it was a dependency, then I changed it to devDepenency) in the project?
Or if this is the correct behavior then please point me to any docs/resources explaining this behavior.
Well it turns out that it was a npm thing. Earlier I had webpack as a dependency in package.json
. Then I ran npm uninstall webpack --save
and then again did npm install webpack --save-dev
in order to make it a dev dependency. Turns out that it wasnt enough. I stopped getting webpack dependencies in my bundle only after I deleted my node_modules folder and then did npm install again.