嘿!掘友们!今天我发现了很有趣的问题,为什么我们在使用npm指令时加run?
我来讲讲是怎么肥事。
自定义脚本指令
首先要清楚,npm 可以执行在项目中的 package.json 内自定义脚本命令
{
// 自定义脚本命令
"scripts": {
"start": "node index.js",
"echo": "echo \"test\"",
"dev": "vite",
"serve": "vue-cli-service serve"
}
}
npm run 原理
在使用 npm run <scriptName> 指令时会创建一个 shell, 然后在shell中执行指令。
这样我们就大致清楚了,说到这里大概就知道怎么回事了。
区别
在不使用 run 时,一般我们写的脚本都是可以直接在 终端(terminal) 执行的。
而使用run的原因是因为 我们写的脚本不能直接在 终端(terminal) 执行,需要找到脚本命令中的依赖名后重新编译后才运行shell脚本。
比如上面的 serve 命令,我们的终端没有 vite 指令,不能直接使用npm serve命令。
所以运行上面脚本指令,应该是这样的:
-
start->npm start&&npm run start -
echo->npm echo&&npm run echo -
dev->npm run dev -
serve->npm run serve
yarn
Yarn 就比较牛了,它加不加run都一样。
-
如果
scripts本地 package.json 中的字段包含匹配的脚本名称,则将执行其定义。 -
否则,如果本地工作空间的依赖项之一公开了具有匹配名称的二进制文件,则该二进制文件将被执行。
-
否则,如果指定的名称包含冒号字符,并且项目中的工作区之一恰好包含一个具有匹配名称的脚本,则该脚本将被执行。
你懂了吗?
我是一个满脑子奇怪知识的小商同学,在校ing,懂点设计,懂点排版,为成为一名优秀的前端工程师而努力。