# npm相关
# package.json中版本号
package.json的版本号,~与^是有区别的。
以"lodash": "^4.17.20"为例:
~: 使用install安装时,会忽略最后一位20,安装4.17.X的最新版本^: 使用install安装时,会忽略后面2位,安装4.X.X的最新版本
# 线上npm安装优化
我们知道,常用的package.json中有3个标签管理版本,分别是:dependencies、devDependencies、peerDependencies。作用也很明显:
dependencies: 代码中需要用到的依赖包devDependencies: 开发环境下需要用到的依赖包,比如常见的eslint、babel、webpack这种工具类的peerDependencies: 当作为第3方库使用时,比如lodash的库,它如果在这里配置了一个xx的包,在安装时并不会下载xx,而是安装完成后如果没有找到这个xx,会提示你自行安装。
那么对于线上npm安装(一般是CICD自动化任务构建)时,devDependencies肯定是没有必要的,就不必使用npm install进行安装,有2种方式:
npm ci,它会根据package-lock.json文件,快速安装,应该是会忽略一些install时的逻辑,速度会很快。当然,如果没有这个文件,就会报错了。npm i --production,它会忽略devDependencies下的安装包。所以,使用它时,必须确保你代码中的依赖都在dependencies中。