npm原理


一、什么是 npm 腳本?

npm 允許在package.json文件里面,使用scripts字段定義腳本命令。


{  // ... "scripts": { "build": "node build.js" } } 

上面代碼是package.json文件的一個片段,里面的scripts字段是一個對象。它的每一個屬性,對應一段腳本。比如,build命令對應的腳本是node build.js

命令行下使用npm run命令,就可以執行這段腳本。


$ npm run build
# 等同於執行 $ node build.js 

這些定義在package.json里面的腳本,就稱為 npm 腳本。它的優點很多。

  • 項目的相關腳本,可以集中在一個地方。
  • 不同項目的腳本命令,只要功能相同,就可以有同樣的對外接口。用戶不需要知道怎么測試你的項目,只要運行npm run test即可。
  • 可以利用 npm 提供的很多輔助功能。

查看當前項目的所有 npm 腳本命令,可以使用不帶任何參數的npm run命令。


$ npm run

二、原理

npm 腳本的原理非常簡單。每當執行npm run,就會自動新建一個 Shell,在這個 Shell 里面執行指定的腳本命令。因此,只要是 Shell(一般是 Bash)可以運行的命令,就可以寫在 npm 腳本里面。

比較特別的是,npm run新建的這個 Shell,會將當前目錄的node_modules/.bin子目錄加入PATH變量,執行結束后,再將PATH變量恢復原樣。

這意味着,當前目錄的node_modules/.bin子目錄里面的所有腳本,都可以直接用腳本名調用,而不必加上路徑。比如,當前項目的依賴里面有 Mocha,只要直接寫mocha test就可以了。


"test": "mocha test" 

而不用寫成下面這樣。


"test": "./node_modules/.bin/mocha test" 

由於 npm 腳本的唯一要求就是可以在 Shell 執行,因此它不一定是 Node 腳本,任何可執行文件都可以寫在里面。

npm 腳本的退出碼,也遵守 Shell 腳本規則。如果退出碼不是0,npm 就認為這個腳本執行失敗。

原文:www.ruanyifeng.com/blog/2016/10/npm_scripts.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM