Webpack包含捆绑包中自己的依赖项

我对Webpack相当陌生,并且我有一个使用vue cli的Vue项目。在使用vue-cli-service build分析webpack捆绑包(使用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

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

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

iCMS 回答:Webpack包含捆绑包中自己的依赖项

事实证明这是npm的事情。之前,我在package.json中将webpack作为依赖项。然后,我运行npm uninstall webpack --save,然后再次运行npm install webpack --save-dev以使其成为dev依赖项。事实证明这还不够。仅在删除node_modules文件夹然后再次安装npm后,我才停止在捆绑软件中获取webpack依赖关系。

,

关于我如何发现问题的框架的提示。在 Webpack 配置中,我设置了 {node: false},然后我构建了生产代码。 Webpack 应该标记有问题的框架。对于最初为服务器端编写并期望某些包可用但不会显示在 package-lock.json 上的代码,这可能是一个问题。

如果您使用的是 create-react-app 之类的东西,那么您可以使用 react-app-rewired 之类的框架来自定义 Webpack 配置。

愉快的未使用代码破坏!

本文链接:https://www.f2er.com/1720757.html

大家都在问