供应链安全

使用 deno ci、audit、依赖年龄、生命周期脚本审批、锁文件与 vendor 降低依赖风险

依赖安全不是一次扫描,而是从解析、安装、脚本执行到升级发布的连续控制。

可复现安装

Deno 2.8 起,deno ci 提供类似 npm ci 的严格安装:要求已有 deno.lock、清理旧 node_modules,并按 frozen lockfile 安装。

deno ci
deno ci --prod
deno test

日常开发用 deno install;CI 和生产构建用 deno ci。锁文件过期时在开发分支显式更新并评审 diff,不在 CI 自动修复。

漏洞与生命周期脚本

deno audit
deno audit --socket
deno audit --fix
deno approve-scripts

deno audit --fix 会修改 manifest 并重建锁文件,应作为需要代码评审的升级操作。Deno 默认不执行 npm preinstall / postinstall;确有需要时只批准具体包:

deno install --allow-scripts=npm:better-sqlite3

最小依赖年龄

Deno 2.9 默认跳过发布不足 24 小时的 npm 版本。项目可以把窗口调大:

{
  "minimumDependencyAge": "P3D"
}
min-release-age=3
trust-policy=no-downgrade

trust-policy=no-downgrade 用于阻止已锁定包从可信发布方式静默降级到更弱方式;当前默认关闭,应先评估依赖生态的 provenance 覆盖。

Lockfile 与 vendor

锁文件固定版本和完整性,但远程源消失时仍无法离线构建;vendor: true 可以把源码物化进仓库。高保障环境同时提交 deno.lockvendor/,CI 再使用 frozen 模式。

官方依据:Supply chain managementdeno cideno audit

输入关键词搜索全部文档。