1 package.json scripts
执行npm run serve
,实际会去执行package.json中scripts定义的serve命令
"scripts": {
"serve": "vue-cli-service serve"
},
2 node_modules/.bin
接上面,package.json中serve
命令里的vue-cli-service
,实际会去运行node_modules/.bin
中同名的脚步文件。
so,npm run serve
可以约等于执行了 ./node_modules/.bin/vue-cli-service serve
。
ps:.bin
目录下一个命令对应的脚本文件其实会有三个,以cross-env
为例,安装完成后,在bin目录下会有:cross-env
、cross-env.cmd
、cross-env.ps1
三个文件。默认执行的文件是cross-env,windows系统中cmd执行的情况,会执行.cmd后缀的文件,powershell执行ps1后缀的可以跨平台。
3 package.json bin
那么是什么时候把脚本文件添加到./bin目录下的呢,就是在执行npm install
命令的时候。"@vue/cli-service"
中的package.json文件,声明了bin
属性:
"bin": {
"vue-cli-service": "bin/vue-cli-service.js"
}
这样在执行npm install vue-cli-service
的时候就会把"bin/vue-cli-service.js"
放到node_modules/.bin
的目录下
当然全局安装的时候,可以直接在命令行执行vue-cli-service
(局部安装的情况,命令行直接执行会报错