跳到主要内容
版本:11.x

pnpm sbom

添加于:v11.0.0

为项目生成软件物料清单(SBOM)。

支持的格式:

  • CycloneDX 1.7 (JSON)
  • SPDX 2.3(JSON)

使用方法​

pnpm sbom --sbom-format cyclonedx
pnpm sbom --sbom-format spdx
pnpm sbom --sbom-format cyclonedx --lockfile-only
pnpm sbom --sbom-format spdx --prod
pnpm sbom --sbom-format cyclonedx --out sbom.cdx.json
pnpm sbom --sbom-format cyclonedx --split
pnpm sbom --sbom-format cyclonedx --exclude-peers

在工作区内,pnpm sbom 支持过滤。当选择单个工作区包时,SBOM 的根组件使用该软件包的元数据。

自 v11.20.0 版本起,从命名注册表解析出的组件会携带 purl 的 repository_url 限定符(例如 pkg:npm/foo@1.0.0?repository_url=https%3A%2F%2Fnpm.work.example.com%2F),因此,即使两个注册表提供名称和版本相同的组件,它们也不会被合并为同一个组件。 namedRegistries URL 中可能包含的凭证信息(即用户信息或查询字符串)会从限定符中剔除,而源和路径则予以保留,因为两个注册表之间可能仅在路径上存在差异。

CycloneDX 输出会将仅可通过 devDependencies 访问的组件标记为 scope: "excluded",并添加 cdx:npm:package:development 属性。运行时组件,包括已安装的可选依赖项,使用默认所需范围。

配置项​

--sbom-format <cyclonedx|spdx>​

SBOM 输出格式。此选项为必填项。支持的值:cyclonedx、spdx。

--sbom-type <library|application>​

  • 默认:library

根软件包的组件类型。

--sbom-spec-version <version>​

添加于:v11.1.0

  • 默认值:1.7
  • 类型:1.5, 1.6, 1.7

要导出的 CycloneDX 规格版本。仅在使用 --sbom-format cyclonedx 时有效。

--lockfile-only​

仅使用锁文件数据(跳过从存储中读取)。

--sbom-authors <names>​

逗号分隔的 SBOM 作者列表。在 CycloneDX 输出中写入的 metadata.authors。

--sbom-supplier <name>​

SBOM 供应商名称。在 CycloneDX 输出中写入的 metadata.supplier。

--out <path>​

添加于:v11.8.0

将 SBOM 写入文件,而不是标准输出。

在路径中使用 %s 作为包名的占位符,并使用 %v 作为包版本的占位符。在工作区中,包含 %s 的路径为每个选定的包写入一个 SBOM:

pnpm sbom --sbom-format cyclonedx --out out/%s.cdx.json
pnpm sbom --sbom-format cyclonedx --out out/%s-%v.cdx.json

--split​

添加于:v11.8.0

为每个选定的工作区包生成单独的 SBOM。若不使用 --out 参数,SBOM 将以 NDJSON 格式输出至标准输出,即每行一个 JSON 文档。

当 --split 与 --out 结合使用时,输出路径必须包含 %s。

--exclude-peers​

添加于:v11.9.0

将对等依赖项从 SBOM 中排除。仅通过这些对等依赖项访问的依赖项也会被排除在外。

这对于自动安装对等包非常有用,因为对等依赖项会被解析到锁文件中,并且在其他方​​面与常规依赖项看起来完全相同。

--prod, -P​

仅包含 dependencies 和 optionalDependencies。

--dev, -D​

仅包含 devDependencies。

--no-optional​

不包含 optionalDependencies。

--filter <package_selector>​

阅读更多有关过滤的内容。