最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

前端面試之輸入npm?run后執(zhí)行原理

 更新時間:2022年07月05日 10:05:18   作者:小胖子學習筆記  
這篇文章主要為大家介紹了前端面試之輸入npm?run后發(fā)生了什么及執(zhí)行原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

引言

在前端開發(fā)的工作當中,使用 npm run dev 的命令啟動本地開發(fā)環(huán)境,是再正常不過的事了。那么,當輸入完類似 npm run xxx 的命令后,究竟是如何觸發(fā)各種構建工具的構建命令以及啟動 Node 服務等功能的呢?

首先我們知道,Node 作為 JavaScript 的運行時,可以把 .js 文件當做腳本來運行,像這種:

node index.js

當我們使用 npm 來管理項目(或者 yarn)時,會在根目錄下生成一個 package.json 文件,其中的 scripts 屬性,就是用于配置 npm run xxx 命令的,比如我有如下配置:

// package.json
{
  // ...
  "scripts": {
    "start": "node ./src/index.js",
    "build": "react-scripts build",
  },
  // ...
}

當執(zhí)行 npm start 時,對于 npm 來說,相當于執(zhí)行 npm run start ,則映射為 scripts 屬性下的 start 命令,即

npm start
# 相當于
npm run start
# 相當于
node ./src/index.js

這個比較好理解,就是直接使用全局安裝的 Node 命令來執(zhí)行了 ./src 目錄下的 index.js 文件而已。

如上面類似,執(zhí)行 npm run build 即相當于執(zhí)行 react-scripts build 命令。這個命令,是使用 create-react-app 搭建 React 項目時默認配置的。與 Node 不同,react-scripts 并沒有全局安裝,怎么就能直接執(zhí)行呢?

這時我們不妨看一下,使用 create-react-app 搭建的項目(使用 vue-cli 搭建的項目也一樣),在 npm install 后,其 node_modules 目錄下面的樣子:

如圖可以看到有一個 .bin 目錄,這個目錄不是任何一個 npm 包。目錄下的文件,右面都有一個小箭頭(VS Code 上這樣顯示),表示這是一個軟鏈接,打開文件可以看到文件頂部寫著 #!/user/bin/env node ,表示這是一個通過使用 Node 執(zhí)行的腳本。

由此我們可以知道,當使用 npm run build 執(zhí)行 react-scripts build 時,雖然沒有安裝 react-scripts 的全局命令,但是 npm 會到 ./node_modules/.bin 中找到 react-scripts.js 文件作為 Node 腳本來執(zhí)行,則相當于執(zhí)行了 ./node_modules/.bin/react-scripts build(最后的 build 作為參數(shù)傳入)。

npm run build
# 相當于
./node_modules/.bin/react-scripts build

前面說過,react-scripts 是一個軟鏈接,那么它的指向是哪里,又是怎么來的呢?

我們可以在 node_modules 目錄下,直接找到 react-scripts 包,查看其目錄結構和 package.json 如下:

package.json 中可知,這個包將 ./bin/react-scripts.js 作為 bin 聲明了。所以在 npm install 時,npm 讀到該配置后,就將該文件軟鏈接到 ./node_modules/.bin 目錄下,而 npm 還會自動把node_modules/.bin加入$PATH,這樣就可以直接作為命令運行依賴程序和開發(fā)依賴程序,不用全局安裝了。

假如我們在安裝包時,使用 npm install -g xxx 來安裝,那么會將其中的 bin 文件加入到全局,比如 create-react-appvue-cli ,在全局安裝后,就可以直接使用如 vue-cli projectName 這樣的命令來創(chuàng)建項目了。

以上就是前端面試之輸入npm run后執(zhí)行原理的詳細內容,更多關于npm run執(zhí)行原理的資料請關注腳本之家其它相關文章!

相關文章

  • 簡單談談node.js 版本控制 nvm和 n

    簡單談談node.js 版本控制 nvm和 n

    大量開發(fā)者的貢獻使Node版本的迭代速度很快,版本很多(橫跨0.6到0.11),所以升級Node版本就成為了一個問題。目前有n和nvm這兩個工具可以對Node進行無痛升級,本文簡單介紹一下二者的使用。
    2015-10-10
  • node自定義安裝更改npm全局模塊默認安裝路徑的步驟

    node自定義安裝更改npm全局模塊默認安裝路徑的步驟

    有段時間沒用npm了,新建個項目,需要改變npm全局包默認安裝的路徑,本文就來介紹一下node自定義安裝更改npm全局模塊默認安裝路徑的步驟,感興趣的可以了解下
    2021-09-09
  • Node.js折騰記一:讀指定文件夾,輸出該文件夾的文件樹詳解

    Node.js折騰記一:讀指定文件夾,輸出該文件夾的文件樹詳解

    這篇文章主要介紹了Node.js讀指定文件夾輸出該文件夾文件樹,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Mac中安裝nvm的教程分享

    Mac中安裝nvm的教程分享

    下面小編就為大家分享一篇Mac中安裝nvm的教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • node.js中的fs.writeFile方法使用說明

    node.js中的fs.writeFile方法使用說明

    這篇文章主要介紹了node.js中的fs.writeFile方法使用說明,本文介紹了fs.writeFile的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • node+multer實現(xiàn)圖片上傳的示例代碼

    node+multer實現(xiàn)圖片上傳的示例代碼

    這篇文章主要介紹了node+multer實現(xiàn)圖片上傳的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02
  • 淺談Express.js解析Post數(shù)據(jù)類型的正確姿勢

    淺談Express.js解析Post數(shù)據(jù)類型的正確姿勢

    這篇文章主要介紹了Express.js解析Post數(shù)據(jù)類型的正確姿勢,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • node.js實現(xiàn)為PDF添加水印的示例代碼

    node.js實現(xiàn)為PDF添加水印的示例代碼

    這篇文章主要介紹了node.js實現(xiàn)為PDF添加水印的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-12-12
  • 深入理解node.js http模塊

    深入理解node.js http模塊

    這篇文章主要介紹了深入理解node.js http模塊,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • 詳解node和ES6的模塊導出與導入

    詳解node和ES6的模塊導出與導入

    在本篇文章里小編給大家分享的是關于node和ES6的模塊導出與導入知識點,需要的朋友們可以參考下。
    2020-02-02

最新評論

五常市| 灵武市| 延边| 鄢陵县| 康乐县| 西峡县| 荔波县| 望都县| 玛纳斯县| 襄樊市| 民乐县| 宣城市| 渝中区| 泽普县| 汝城县| 伊金霍洛旗| 隆化县| 绥江县| 仁布县| 广安市| 无为县| 兴海县| 连州市| 扎赉特旗| 河东区| 怀集县| 抚顺县| 水富县| 浑源县| 新田县| 子长县| 陆丰市| 北辰区| 湖州市| 井研县| 凤阳县| 广元市| 托克逊县| 溆浦县| 昌都县| 义乌市|