npm install 运行原理
npm install会检测是否存在package-lock.json文件
一、没有lock文件
1、根据package.json分析依赖关系。
2、从registry仓库中下载压缩包(如果我们设置了镜像,那么会从镜像服务器下载压缩包)。
3、获取到压缩包后会对压缩包进行缓存(从npm5开始有的)。
4、将压缩包解压到项目的node_modules文件夹中(require的查找顺序会在该包下面查找)。
二、有lock文件
1、检测lock中包的版本是否和package.json中一致。
2、不一致,那么会重新构建依赖关系,直接会走顶层的流程。
3、一致的情况下,会去优先查找缓存。
4、没有找到,会从registry仓库下载,直接走顶层流程。
5、查找到,会获取缓存中的压缩文件,并且将压缩文件解压到node_modules文件夹中。
npm run xxx 运行原理
1、执行 npm run xxx 时,会先从当前目录下的node_modules/.bin中去查找对应的可执行程序执行。
2、如果无法找到,就会在npm的全局安装路径进行查找,也就是npm i -g xxx时安装的路径。
3、如果还找不到,就会从系统环境变量中查找。
4、还没到就会报错。
例:npm run serve,会运行package.json中script, "serve": "vue-cli-service serve"
执行过程:
会调用执行node_modules/.bin/vue-cli-service,
其中node_modules/.bin,会被临时加入到系统环境变量,
所以package.json中可以省略,直接写成vue-cli-service。