黔東南網(wǎng)頁(yè)設(shè)計(jì)seo搜索引擎優(yōu)化人員
文章目錄
- 一、去package.json尋找scripts對(duì)應(yīng)的命令
- 二、去node_modules尋找vue-cli-service
- 三、從package-lock.json獲取.bin的軟鏈接
- 1. bin目錄下的那些軟連接存在于項(xiàng)目最外層的package-lock.json文件中。
- 2.vue-cli-service文件的作用
- 3.npm install 的作用
- 總結(jié)
一、去package.json尋找scripts對(duì)應(yīng)的命令
比如在npm run dev的時(shí)候,首先會(huì)去項(xiàng)目的package.json文件里找scripts 里找對(duì)應(yīng)的 dev ,然后執(zhí)行 dev 的命令。
也就是說(shuō),啟動(dòng)vue項(xiàng)目 npm run dev的時(shí)候,實(shí)際上就是執(zhí)行了vue-cli-service serve 這條命令。
"scripts": {"dev": "vue-cli-service serve","build": "vue-cli-service build",
},
問(wèn)題1:為什么不直接執(zhí)行vue-cli-service serve命令呢?
因?yàn)椴僮飨到y(tǒng)中沒(méi)有vue-cli-service 這條命令。
二、去node_modules尋找vue-cli-service
問(wèn)題2:既然vue-cli-service serve這條指令不存在操作系統(tǒng)中,為什么執(zhí)行npm run dev的時(shí)候,也就是執(zhí)行了vue-cli-service serve 能成功,并且不報(bào)錯(cuò)呢?
(1)首先,大家都知道,我們通過(guò)npm i 安裝依賴(lài)。例如 npm i @vue/cli-service,npm 在 安裝這個(gè)依賴(lài)的時(shí)候,就會(huì)node_modules/.bin/ 目錄中創(chuàng)建 好vue-cli-service 為名的幾個(gè)可執(zhí)行文件了。
(2).bin 目錄不是任何一個(gè) npm 包。目錄下的文件,表示一個(gè)個(gè)軟鏈接,打開(kāi)文件可以看到文件頂部寫(xiě)著 #!/bin/sh ,表示這是一個(gè)腳本。所以當(dāng)使用 npm run dev 執(zhí)行 vue-cli-service serve 時(shí),雖然沒(méi)有安裝 vue-cli-service的全局命令,但是 npm 會(huì)到 ./node_modules/.bin 中找到 vue-cli-service 文件作為 腳本來(lái)執(zhí)行,則相當(dāng)于執(zhí)行了 ./node_modules/.bin/vue-cli-service serve。
三、從package-lock.json獲取.bin的軟鏈接
問(wèn)題3:.bin 目錄下的文件表示軟連接,那這個(gè)bin目錄下的那些軟連接文件是哪里來(lái)的?它又是怎么知道這條軟連接是執(zhí)行哪里的呢?
1. bin目錄下的那些軟連接存在于項(xiàng)目最外層的package-lock.json文件中。
從 package-lock.json 中可知,當(dāng)我們npm install 整個(gè)新建的vue項(xiàng)目的時(shí)候,npm 將 bin/vue-cli-service.js 作為 bin 聲明了。所以在 npm install 時(shí),npm 讀到該配置后,就將該文件軟鏈接到 ./node_modules/.bin 目錄下。
2.vue-cli-service文件的作用
node_modelues --> .bin --> vue-cli-service 中將npm 還會(huì)自動(dòng)把node_modules/.bin加入$PATH,這樣就可以直接作為命令運(yùn)行依賴(lài)程序和開(kāi)發(fā)依賴(lài)程序,不用全局安裝了。
3.npm install 的作用
npm install 的時(shí)候,npm 就幫我們把這種軟連接配置好了,其實(shí)這種軟連接相當(dāng)于一種映射,執(zhí)行npm run dev 的時(shí)候,就會(huì)到 node_modules/bin中找對(duì)應(yīng)的映射文件,然后再找到相應(yīng)的js文件來(lái)執(zhí)行。
總結(jié)
npm install 時(shí),npm 讀到該配置后,就將該文件軟鏈接到 ./node_modules/.bin 目錄下,而 npm 還會(huì)自動(dòng)把node_modules/.bin加入$PATH,這樣就可以直接作為命令運(yùn)行依賴(lài)程序和開(kāi)發(fā)依賴(lài)程序,不用全局安裝了。
然后在運(yùn)行npm run dev 的時(shí)候,dev會(huì)去package.json尋找scripts對(duì)應(yīng)的命令,這個(gè)命令會(huì)執(zhí)行在node_modules --> bin中由npm i 映射的軟鏈接,然后再找到相應(yīng)的js文件來(lái)執(zhí)行。 也就是說(shuō) npm i 的時(shí)候,npm 就幫我們把這種軟連接配置好了