輸入npm?run?xxx后執(zhí)行原理深入解析
前言
當(dāng)我們輸入npm run XXX會(huì)首先去package.json文件里找scripts 里找對應(yīng)的xxx,然后執(zhí)行 xxx的命令,例如我下面這個(gè)項(xiàng)目輸入npm run dev就會(huì)執(zhí)行vue-cli-service serve 這條命令。
package.json文件
那么問題來了:
為什么不直接執(zhí)行vue-cli-service serve
而要執(zhí)行npm run serve
呢?
因?yàn)?直接執(zhí)行vue-cli-service serve
,會(huì)報(bào)錯(cuò),因?yàn)椴僮飨到y(tǒng)中沒有存在vue-cli-service
這一條指令。
那么問題又來了:
為什么執(zhí)行npm run serve
的時(shí)候,這樣它就能成功,而且不報(bào)指令不存在的錯(cuò)誤呢?
我們在安裝依賴的時(shí)候,是通過npm i xxx 來執(zhí)行的,例如 npm i @vue/cli-service
,npm 在 安裝這個(gè)依賴的時(shí)候,就會(huì)node_modules/.bin/
目錄中創(chuàng)建 好vue-cli-service
為名的幾個(gè)可執(zhí)行文件了。
.bin 目錄,這個(gè)目錄不是任何一個(gè) npm 包。目錄下的文件,表示這是一個(gè)個(gè)軟鏈接,打開文件可以看到文件頂部寫著 #!/bin/sh
,表示這是一個(gè)腳本。
由此我們可以知道,當(dāng)使用 npm run serve
執(zhí)行 vue-cli-service serve
時(shí),雖然沒有安裝 vue-cli-service
的全局命令,但是 npm 會(huì)到 ./node_modules/.bin
中找到 vue-cli-service
文件作為 腳本來執(zhí)行,則相當(dāng)于執(zhí)行了 ./node_modules/.bin/vue-cli-service serve
(最后的 serve 作為參數(shù)傳入)。
總結(jié)
- 運(yùn)行 npm run xxx的時(shí)候,npm 會(huì)先在當(dāng)前目錄的 node_modules/.bin 查找要執(zhí)行的程序,如果找到則運(yùn)行;
- 沒有找到則從全局的 node_modules/.bin 中查找,npm i -g xxx就是安裝到到全局目錄;
- 如果全局目錄還是沒找到,那么就從 path 環(huán)境變量中查找有沒有其他同名的可執(zhí)行程序。
參考 http://www.dbjr.com.cn/article/254116.htm
以上就是輸入npm run xxx后執(zhí)行原理深入解析的詳細(xì)內(nèi)容,更多關(guān)于npm run xxx執(zhí)行原理的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Code:loadScript( )加載js的功能函數(shù)
Code:loadScript( )加載js的功能函數(shù)...2007-02-02JavaScript截取字符串的Slice、Substring、Substr函數(shù)詳解和比較
這篇文章主要介紹了JavaScript截取字符串的Slice、Substring、Substr函數(shù)詳解和比較,需要的朋友可以參考下2014-03-03JavaScript實(shí)現(xiàn)動(dòng)態(tài)加載刪除表格
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)動(dòng)態(tài)加載刪除表格,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04JavaScript獲取上傳進(jìn)度的幾種方式實(shí)現(xiàn)
進(jìn)度條的應(yīng)用是為了顯示的告訴用戶文件上傳了多少,本文主要介紹了JavaScript獲取上傳進(jìn)度的幾種方式,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08Javascript ES6中對象類型Sets的介紹與使用詳解
這篇文章主要給大家介紹了關(guān)于Javascript ES6中Sets的介紹與使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-07-07