npm run xxx 这个过程发生了什么

113 阅读1分钟

cmd基本执行逻辑

  1. 是否是绝对路径,如果该路径下是一个可执行程序文件,则会执行该程序,否则会报错
  2. 会在 cmd 所操作的目录下寻找执行
  3. 在系统的内置命令中去寻找执行
  4. 环境变量中的Path中记载的目录中寻找执行,没有则报错

我们使用 npm 命令能正常使用是因为我们在环境变量中的 Path 中有nodeJs的路径目录,其中就有 npm 命令操作程序。

我们在安装 nodeJs 的时候会自动安装对应的 npm

image.png

npm run xxx执行过程

在项目中,我们通常使用 npm run xxx 来进行操作项目的运行,打包等。实际上是操作的 package.json 中的 scripts 脚本命令。

例如:

"scripts": {
    "dev": "vue-cli-service serve",
    "build": "vue-cli-service build",
  },

但是我们在实际操作时发现并不能直接使用 vue-cli-service serve 命令, 原因是我们并没有全局安装 vue-cli-servicecmd 命令找不到该执行程序

通过查阅npm 的文档中的npm-run-script 发现实际执行路径应该是:

"scripts": {
   "dev": "./node_modules/.bin/vue-cli-service serve",
   "build": "./node_modules/.bin/vue-cli-service build",
 },

但是我们并不能这样写

因为 npm-run 会将 node_modules/.bin 添加到提供给脚本的PATH中。

我们在进行npm install 安装依赖包的时候,会自动在 .bin 文件夹中生成可执行命令文件,实际执行就是 .bin 文件夹下这些程序

image.png