Webpack 在 bundle 中包含它自己的依赖项

rav*_*mar 7 javascript npm webpack vue.js webpack-bundle-analyzer

我是 webpack 的新手,我有一个使用vue cli. 在使用 分析 webpack 包(在生产模式下使用 构建vue-cli-service build)时webpack-bundle-analyzer,我发现一个特定文件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
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,当 webpack 作为 devDependency 添加时,为什么 webpack 在最终包中包含它自己的依赖项(之前它是一个依赖项,然后我将其更改为 devDepenency)?

或者,如果这是正确的行为,那么请向我指出解释此行为的任何文档/资源。

rav*_*mar 1

事实证明这是 npm 的事情。早些时候,我将 webpack 作为package.json. 然后我运行npm uninstall webpack --save然后再次运行npm install webpack --save-dev以使其成为开发依赖项。事实证明这还不够。仅在删除了 node_modules 文件夹并再次执行 npm install 后,我才停止在捆绑包中获取 webpack 依赖项。