当我们执行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 这样的命令来创建项目了。
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_47450807/article/details/124234288
内容来源于网络,如有侵权,请联系作者删除!