Skip to content

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 ​

  1. 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ọi package.json và lockfile.
  2. 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.
  3. 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áo ERESOLVE với nhóm gói ghim chính xác và peer lẫn nhau. Xoá các mục đó trước npm install.
  • npm audit fix thoá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.