是不是还有很多人对dependencies和devDependencies的概念是:
dependencies
: 声明的依赖都会进构建产物;
devDependencies
: 声明的依赖不会进构建产物;
但是实际上是,只要某个文件在入口文件的依赖关系中被引用,就会进入构建产物,不管是在哪声明,它叫什么,也不管它import
了什么。
还有一种情况,如果打包配置的externals
选项中,配置了Vue
,最后不管是在dependencies
还是devDependencies
中声明,最后的构建产物都不会有Vue
。
那为什么还要区分这个
-
生产部署时可跳过
devDependencies
npm install --production # 或 yarn install --production # 或 pnpm install --prod
这会只安装
dependencies
,不装devDependencies
,节省部署空间、时间和安全面。 -
作为npm包发布时的依赖区分
dependencies
会一起被装到使用者项目里;devDependencies
不会(除非使用者也明确装了它)。