目錄
npm-sbom
選擇 CLI 版本
目錄
概要
npm sbom
說明
npm sbom
指令會產生軟體材料清單 (SBOM),其中列出目前專案的相依性。SBOM 可以產生 SPDX 或 CycloneDX 格式。
範例 CycloneDX SBOM
{"$schema": "http://cyclonedx.org/schema/bom-1.5.schema.json","bomFormat": "CycloneDX","specVersion": "1.5","serialNumber": "urn:uuid:09f55116-97e1-49cf-b3b8-44d0207e7730","version": 1,"metadata": {"timestamp": "2023-09-01T00:00:00.001Z","lifecycles": [{"phase": "build"}],"tools": [{"vendor": "npm","name": "cli","version": "10.1.0"}],"component": {"bom-ref": "simple@1.0.0","type": "library","name": "simple","version": "1.0.0","scope": "required","author": "John Doe","description": "simple react app","purl": "pkg:npm/simple@1.0.0","properties": [{"name": "cdx:npm:package:path","value": ""}],"externalReferences": [],"licenses": [{"license": {"id": "MIT"}}]}},"components": [{"bom-ref": "lodash@4.17.21","type": "library","name": "lodash","version": "4.17.21","scope": "required","author": "John-David Dalton","description": "Lodash modular utilities.","purl": "pkg:npm/lodash@4.17.21","properties": [{"name": "cdx:npm:package:path","value": "node_modules/lodash"}],"externalReferences": [{"type": "distribution","url": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"},{"type": "vcs","url": "git+https://github.com/lodash/lodash.git"},{"type": "website","url": "https://lodash.dev.org.tw/"},{"type": "issue-tracker","url": "https://github.com/lodash/lodash/issues"}],"hashes": [{"alg": "SHA-512","content": "bf690311ee7b95e713ba568322e3533f2dd1cb880b189e99d4edef13592b81764daec43e2c54c61d5c558dc5cfb35ecb85b65519e74026ff17675b6f8f916f4a"}],"licenses": [{"license": {"id": "MIT"}}]}],"dependencies": [{"ref": "simple@1.0.0","dependsOn": ["lodash@4.17.21"]},{"ref": "lodash@4.17.21","dependsOn": []}]}
範例 SPDX SBOM
{"spdxVersion": "SPDX-2.3","dataLicense": "CC0-1.0","SPDXID": "SPDXRef-DOCUMENT","name": "simple@1.0.0","documentNamespace": "http://spdx.org/spdxdocs/simple-1.0.0-bf81090e-8bbc-459d-bec9-abeb794e096a","creationInfo": {"created": "2023-09-01T00:00:00.001Z","creators": ["Tool: npm/cli-10.1.0"]},"documentDescribes": ["SPDXRef-Package-simple-1.0.0"],"packages": [{"name": "simple","SPDXID": "SPDXRef-Package-simple-1.0.0","versionInfo": "1.0.0","packageFileName": "","description": "simple react app","primaryPackagePurpose": "LIBRARY","downloadLocation": "NOASSERTION","filesAnalyzed": false,"homepage": "NOASSERTION","licenseDeclared": "MIT","externalRefs": [{"referenceCategory": "PACKAGE-MANAGER","referenceType": "purl","referenceLocator": "pkg:npm/simple@1.0.0"}]},{"name": "lodash","SPDXID": "SPDXRef-Package-lodash-4.17.21","versionInfo": "4.17.21","packageFileName": "node_modules/lodash","description": "Lodash modular utilities.","downloadLocation": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz","filesAnalyzed": false,"homepage": "https://lodash.dev.org.tw/","licenseDeclared": "MIT","externalRefs": [{"referenceCategory": "PACKAGE-MANAGER","referenceType": "purl","referenceLocator": "pkg:npm/lodash@4.17.21"}],"checksums": [{"algorithm": "SHA512","checksumValue": "bf690311ee7b95e713ba568322e3533f2dd1cb880b189e99d4edef13592b81764daec43e2c54c61d5c558dc5cfb35ecb85b65519e74026ff17675b6f8f916f4a"}]}],"relationships": [{"spdxElementId": "SPDXRef-DOCUMENT","relatedSpdxElement": "SPDXRef-Package-simple-1.0.0","relationshipType": "DESCRIBES"},{"spdxElementId": "SPDXRef-Package-simple-1.0.0","relatedSpdxElement": "SPDXRef-Package-lodash-4.17.21","relationshipType": "DEPENDS_ON"}]}
僅套件鎖定模式
如果啟用 package-lock-only,則只會載入套件鎖定 (或 shrinkwrap) 中的資訊。這表示相依性的 package.json 檔案中的資訊(例如說明、首頁、引擎)不會包含在結果集中。
設定
省略
- 預設值:如果
NODE_ENV
環境變數設定為 'production',則為 'dev',否則為空。 - 類型:'dev'、'optional' 或 'peer'(可以設定多次)
從磁碟上的安裝樹中省略的相依性類型。
請注意,這些相依性仍然會解析並新增到 package-lock.json
或 npm-shrinkwrap.json
檔案中。它們只是不會實際安裝在磁碟上。
如果套件類型同時出現在 --include
和 --omit
清單中,則會包含該類型。
如果產生的省略清單包含 'dev'
,則會將 NODE_ENV
環境變數設定為 'production'
以適用於所有生命週期指令碼。
package-lock-only
- 預設值:false
- 類型:布林值
如果設為 true,目前的作業只會使用 package-lock.json
,忽略 node_modules
。
對於 update
,這表示只會更新 package-lock.json
,而不是檢查 node_modules
和下載相依性。
對於 list
,這表示輸出會根據 package-lock.json
描述的樹狀結構,而不是 node_modules
的內容。
sbom-format
- 預設值:null
- 類型:「cyclonedx」或「spdx」
產生 SBOM 時要使用的 SBOM 格式。
sbom-type
- 預設值:「library」
- 類型:「library」、「application」或「framework」
產生的 SBOM 所描述的套件類型。對於 SPDX,這是 primaryPackagePurpose
欄位的數值。對於 CycloneDX,這是 type
欄位的數值。
工作區
- 預設值
- 類型:字串(可以設定多次)
啟用在目前專案設定的工作空間的內容中執行指令,同時根據這個設定選項定義的工作空間進行篩選。
workspace
設定的有效數值為
- 工作空間名稱
- 工作空間目錄的路徑
- 父工作空間目錄的路徑(將會選取該資料夾內的所有工作空間)
當設定給 npm init
指令時,這可以設定為尚未存在的資料夾,以建立資料夾並將其設定為專案中的全新工作空間。
這個數值不會匯出到子程式的環境。
工作區
- 預設值:null
- 類型:null 或布林值
設為 true 以在所有設定的工作空間的內容中執行指令。
明確將此設定為 false 會導致類似 install
的指令完全忽略工作區。未明確設定時
- 針對
node_modules
樹狀結構進行操作的指令(安裝、更新等)會將工作區連結至node_modules
資料夾。- 執行其他操作的指令(測試、執行、發布等)會在根目錄專案中進行,除非在workspace
設定中指定一個或多個工作區。
這個數值不會匯出到子程式的環境。