核心要点禁用 `^`、`~`、`>=`、`<=`、`*` 等范围;生产依赖必须精确版本。冻结策略对关键依赖设审批与解冻窗口;构建门禁严格执行。实现示例type DepEntry = { name: string; version: string; prod: boolean }

function semverValid(v: string): boolean {

return /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/.test(v)

}

function rangeFree(v: string): boolean {

return !/[\^~><=\*xX]/.test(v) && semverValid(v)

}

function evaluate(deps: DepEntry[]): { ok: boolean; errors: string[] } {

const errors: string[] = []

for (const d of deps) {

if (d.prod && !rangeFree(d.version)) errors.push(`range:${d.name}`)

}

return { ok: errors.length === 0, errors }

}

审计与CI门禁构建前校验依赖条目;命中范围版的生产依赖直接阻断。冻结列表变更需审批并记录窗口与影响范围。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部