除了字面的含义的区别,
dependencies
和devDependencies
的区别还在于:
如果你的项目是发布到npm
的一个包,
那么这个包的package.json
中的dependencies
中的依赖是会被下载下来到这个包的node_modules
文件夹中的(如果你的项目本身没有这个依赖),而devDependencies
不会。
举个例子:
我发布了一个组件A
,它有dependencies:lodash
和devDependencies:moment
。
那么,如果你的项目npm install
了组件A
。
除非你的项目也依赖了lodash
并且版本一致,那么项目的node_modules/A
下会有一个node_modules
,里面会有lodash
。
而 moment
,则无论如何也不会出现在你的项目中。
至于一般的项目,不管你是安装在dev还是dependencies中,安装的时候都会安装,打包的时候都会被打进去的,区分依赖只是为了让项目看起来更加清晰。