供应链安全
使用 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.lock 与 vendor/,CI 再使用 frozen 模式。