版本

Package.json 慣例

以下適用於 package.json 檔案的「scripts」區段。

名稱

npm 腳本名稱必須僅包含小寫字母、以 : 分隔部分、以 - 分隔單字,以及以 + 分隔檔案副檔名。每個部分名稱應該是完整的英文單字(例如 coverage 而非 cov)或全部小寫的著名首字母縮寫詞(例如 wasm)。

以下是 ABNF 中的提案摘要。

name         = life-cycle / main target? option* ":watch"?
life-cycle   = "prepare" / "preinstall" / "install" / "postinstall" / "prepublish" / "preprepare" / "prepare" / "postprepare" / "prepack" / "postpack" / "prepublishOnly"
main         = "build" / "lint" ":fix"? / "release" / "start" / "test" / "fetch"
target       = ":" word ("-" word)* / extension ("+" extension)*
option       = ":" word ("-" word)*
word         = ALPHA +
extension    = ( ALPHA / DIGIT )+

順序

腳本名稱必須依照字母順序出現在 package.json 檔案中。本文檔中概述的其他慣例可確保字母順序與邏輯分組一致。

主要腳本名稱

除了npm 生命週期腳本之外,所有腳本名稱都必須以以下名稱之一開頭。

建置

從原始碼和/或資料產生一組檔案的腳本必須以 build 開頭命名。

如果套件包含任何 build:* 腳本,則可以有一個名為 build 的腳本。如果是,則應該產生與個別執行每個 build 腳本相同的輸出。它必須產生執行這些腳本的輸出的子集。

提取

從外部資料或資源產生一組檔案的腳本必須以 fetch 開頭命名。

如果套件包含任何 fetch:* 腳本,則可以有一個名為 fetch 的腳本。如果是,則應該產生與個別執行每個 fetch 腳本相同的輸出。它必須產生執行這些腳本的輸出的子集。

發佈

具有公開副作用(發佈網站、提交至 Git 等)的腳本必須以 release 開頭。

程式碼檢查

靜態分析檔案的腳本(主要是,但不限於執行 eslint 本身)必須以 lint 開頭命名。

如果套件包含任何 lint:* 腳本,則應該有名為 lint 的腳本,並且它必須執行如果單獨呼叫每個 lint:* 腳本會執行的所有檢查。

如果可以修正,程式碼檢查工具除非腳本包含 :fix 修飾詞(請參閱下文),否則不得套用修正。

啟動

start 腳本用於啟動伺服器。 在撰寫本文時,沒有任何 ESLint 套件有多個 start 腳本,因此不需要讓 start 具有任何修飾詞。

測試

執行程式碼以確保實際行為符合預期行為的腳本必須以 test 開頭命名。

如果套件包含任何 test:* 腳本,則應該有名為 test 的腳本,並且它必須執行如果單獨呼叫每個 test:* 腳本會執行的所有測試。

測試腳本不應該包含程式碼檢查。

測試腳本應在可能的情況下回報測試涵蓋率。

修飾詞

可以在上述標準腳本名稱後附加一個或多個下列修飾詞。 如果目標具有修飾詞,它們必須按照以下顯示的順序排列(例如 lint:fix:js:watch 而不是 lint:watch:js:fix

修正

如果程式碼檢查工具可以修正找到的問題,請新增一個腳本副本,並在結尾附加 :fix,該副本也會修正。

目標

正在執行的動作目標名稱。 在 build 腳本的情況下,它應該識別建置成品,例如「javascript」或「css」或「website」。 在 linttest 腳本的情況下,它應該識別要檢查或測試的項目。 在 start 腳本的情況下,它應該識別正在啟動的伺服器。

目標可以參考受影響的檔案副檔名列表(例如 cjsless),並以 + 分隔。 如果有多個副檔名,則列表應該按字母順序排列。 當檔案副檔名具有變體時(例如 CommonJS 的 cjs 和 ESM 的 mjs),可以使用副檔名的通用部分,而不是明確列出所有變體(例如 js 而不是 cjs+jsx+mjs)。

目標不應參考執行動作的工具名稱(eleventywebpack 等)。

選項

不符合其他修飾詞的其他選項。

監看

如果腳本監看檔案系統並回應變更,請在腳本名稱中新增 :watch

變更語言