当Dependency '...' exists in both dependencies and devDependencies
明确声明package.json
和dependencies
中的同一模块时,NPM会触发警告消息:devDependencies
。这表明NPM的开发人员认为使用NPM是一种错误的方式。
这对我来说是令人惊讶的,因为我一直认为这是一个好习惯这样做意味着我可以更改(添加/删除/更新)我的应用依赖关系"不破坏我的构建脚本等。
您是否了解这种观点背后的理性,或者您是否有可能引入问题的例子?
答案 0 :(得分:3)
dependencies
和devDependencies
都安装在顶层的node_modules
目录中。如果你在两个部分中声明它,你可以在不同的版本(或冲突的版本范围)声明它,这样npm就不可能同时满足这两个要求。
在实践中,如果你在两个部分中声明它,npm将选择在dependencies
中声明的版本,即使它更旧,因为这通常是你想要发生的。
作为必然结果:如果您将应用程序依赖项更新为会破坏构建脚本的版本,将破坏您的构建脚本,并声明它两次无法帮助。