Nâng phiên bản thư viện
Thiết kế của bản lệnh: nâng minor/patch tự động mỗi tuần trên máy, nâng major bằng tay có lý do. Chi tiết từng bước ở Lượt kiểm hằng tuần.
Ba luật
- Minor và patch tự nâng bằng
npm-check-updates --target minor, chỉ giữ khi typecheck, lint, unit test, build và E2E chọn lọc đều xanh. Đỏ thì trả lại đúng bytes cũ của mọipackage.jsonvà lockfile. - Major không tự nâng. Lượt hằng tuần chỉ liệt kê bản major và GitHub Action có major mới.
- Gói đứng yên phải có lý do, ghi trong
scripts/deps-hold.json, chặn theo ranh giới (>x.y.z) chứ không theo bản đã đo, để lần sau người đọc biết điều kiện nào thì gỡ được.
Gói thừa
Knip (--dependencies --fix) gỡ dependency không ai import, chỉ giữ thay đổi khi typecheck và build xanh. Cấu hình knip.jsonc (JSON thường không nhận khoá $comment).
Bẫy khi nâng
- Lockfile giữ mục cũ của gói vừa nâng, kể cả bản lồng
*/node_modules/<tên>: npm báoERESOLVEvới nhóm gói ghim chính xác và peer lẫn nhau. Xoá các mục đó trướcnpm install. npm audit fixthoát 1 khi còn advisory chưa vá được. Đó là bình thường, không phải lỗi của lượt nâng.
Ở Conan hôm nay
Nâng tay theo đợt, theo skill deps-upgrade. Gói giữ bản cũ kèm lý do nằm ở .claude/memory/deps-upgrade-holdbacks.md (TypeScript 7 chặn ở React Router 7 và typescript-eslint, mermaid 12 chặn ở plugin VitePress, @cloudflare/workers-types có override), là văn xuôi chứ chưa phải file máy đọc. Hook deps-docs-guard buộc tra Context7 trước khi đổi phiên bản; gác lockfiles chạy npm ci --dry-run nghiêm ở 30 thư mục. Không có npm workspaces, nên ncu --workspaces của bản lệnh phải đổi thành vòng lặp qua từng thư mục.