1

在项目中,package.json 文件中列出了一些依赖包(npm install [some-name] --save),但未在源代码中的任何 ES6 模块文件中导入。这个包是否会包含在最终构建中(例如汇总输出)?

据我了解,未导入的 es6 模块甚至无法提供任何副作用,因此捆绑程序(例如 rollup、webpack)在依赖图中没有它。正因为如此,bundler 甚至不知道它的存在。所以,如果我是正确的,这样的包不包含在捆绑包中。但是,在这种情况下,对于使用任何捆绑器的项目,如果捆绑器用自己的逻辑决定(当它遵循“导入/导出”语句时),那么在 package.json 中分离“依赖项”和“开发依赖项”的原因是什么?在输出中包含什么?

4

1 回答 1

0

我认为您是对的,捆绑程序在您捆绑时不会包含它。该代码是应删除的死代码。

但我认为(如果我错了,请纠正我)当你的图书馆消费者这样做时,npm install他们将不得不下载里面的所有东西package.json来解决它的依赖关系。至少这是我的推理。

于 2020-04-27T10:30:25.043 回答