运行 npm run xxx 的时候发生了什么?

当我们执行npm run xxx的时候。首先会先从package.json中找到执行的命令。例如:package.json中的文件如下所示:

{
  "name": "h5",
  "version": "1.0.7",
  "private": true,
  "scripts": {
    "serve": "vue-cli-service serve"
   },
}

所以当我们执行npm run serve指令,就相当于执行vue-cli-service serve,但是在操作系统中不存在该指令,此时我们该如何去做。
当我们在安装依赖的时候,是通过npm install xxx来执行的,例如npm install @vue/cli-service,npm在安装这个依赖的时候,就会在node_modules/.bin/目录中创建好vue-cli-service为名的几个可执行文件了。
在这里插入图片描述
.bin目录下的文件不是任何一个npm包。目录下的文件,表示这是一个个软连接,打开文件可以看到文件顶部写着#!/bin/sh,表示这是一个脚本。
由此我们可以知道,当使用 npm run serve 执行 vue-cli-service serve时,虽然没有安装 vue-cli-service的全局命令,但是npm 会到 ./node_modules/.bin中找到 vue-cli-service 文件作为 脚本来执行,则相当于执行了 ./node_modules/.bin/vue-cli-service serve(最后的 serve 作为参数传入)。
我们可以直接在新建的vue项目里面搜索vue-cli-service
在这里插入图片描述
所以在 npm install 时,npm 读到该配置后,就将该文件软链接到 ./node_modules/.bin 目录下,而 npm 还会自动把node_modules/.bin加入$PATH,这样就可以直接作为命令运行依赖程序和开发依赖程序,不用全局安装了。
假如我们在安装包时,使用 npm install -g xxx 来安装,那么会将其中的 bin 文件加入到全局,比如 create-react-app 和 vue-cli ,在全局安装后,就可以直接使用如 vue-cli projectName 这样的命令来创建项目了。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值