npm install 和 npm ci 的区别,一半人会答成「后者快一点」。真正的区别是:npm install 有权改写 package-lock.json,npm ci 没有。本文用三个真实场景讲清这个差别为什么在 CI 里是致命的——lock 文件被镜像源来回翻转、macOS 生成的 lock 在 Linux 上缺二进制依赖、package.json 手改后 lock 静默失步——以及 yarn、pnpm 对应的命令是什么。
2026 年 8 月 20 日,arrayref 被投毒。真正值得研究的不是恶意代码本身,而是攻击者把 cargo 的 yank 提示变成了社会工程武器——先把好版本全部标记为废弃,再让 cargo 亲口建议你升级到那个恶意版本。整条链路只在线 86 分钟,却踩中了 Rust 依赖模型里最难防的一环:build.rs 在编译期就是任意代码执行。