【发布时间】:2019-06-23 13:09:47
【问题描述】:
我仔细看了看,找不到这个问题的直接答案。
我添加为devDependencies 的包是否最终会出现在生产包JS 文件中,从而影响其大小?还是只有 dependencies 进入捆绑包?
【问题讨论】:
标签: javascript node.js npm webpack
我仔细看了看,找不到这个问题的直接答案。
我添加为devDependencies 的包是否最终会出现在生产包JS 文件中,从而影响其大小?还是只有 dependencies 进入捆绑包?
【问题讨论】:
标签: javascript node.js npm webpack
不,它不会影响您的包大小,因为这些包仅在开发模式下使用。让我们以typescript 之类的包为例
devDependencies: {
"typescript": "~3.2.5"
}
所以我只需要 typescript 编译器,只在开发模式下进行 linting。而且我实际上并没有在我的项目中导入打字稿,因为它仅用于开发模式。因此,如果您使用的是 webpack,并且您没有在项目中的任何地方导入 typescript,webpack 将摇晃树以消除生产构建不需要的代码,这样包就不会受到影响。
【讨论】:
答案并不像看起来那么简单。这是澄清:https://github.com/webpack/webpack/issues/520#issuecomment-174011824
并在此处添加相关的 sn-p:
由 webpack 构建的浏览器应用程序没有运行时节点依赖项,因此所有前端依赖项都应列为 devDependencies。依赖项与 devDependencies 命名约定在历史上源于节点作为服务器端包管理器,它被滥用到前端包管理器中,这就是为什么这些字段在应用于前端开发时具有违反直觉的名称,这就是为什么每个项目永远都错了。据我所知,在依赖项下列出前端依赖项是无害的,但这是错误的。
我希望这能回答你的问题。
【讨论】:
dependencies 移动到 devDependencies 或反之,您仍然拥有来自 webpack PoV 的相同依赖项列表,因此包大小不受影响。如果你从这两个地方删除依赖,包大小的变化取决于特定的依赖——它可能会也可能不会影响包大小。