Skip to content

Conversation

@sarahdayan
Copy link
Member

@sarahdayan sarahdayan commented Feb 3, 2026

Summary

  • Update .nvmrc and .node-version to Node 20
  • Update engines field in root and shipjs package.json to >=20
  • Update CircleCI config to use cimg/node:20.18

Node.js 20.x is the current LTS version (Active LTS until October 2024, Maintenance until April 2026).

Files changed

  • .nvmrc - 18.20.520
  • .node-version - 18.20.520
  • /package.json - engines.node from >=18 to >=20
  • /packages/shipjs/package.json - engines.node from >=18 to >=20
  • /.circleci/config.yml - cimg/node:18.20cimg/node:20.18

@sarahdayan sarahdayan requested review from a team, aymeric-giraudet and shaejaz and removed request for a team February 3, 2026 12:00
@sarahdayan sarahdayan force-pushed the chore/update-node-20 branch from d2ee3da to d148d82 Compare February 3, 2026 12:12
@sarahdayan sarahdayan requested a review from dhayab February 3, 2026 14:51
@sarahdayan sarahdayan force-pushed the chore/update-node-20 branch from d148d82 to 39a93ec Compare February 3, 2026 14:54
Sarah Dayan and others added 6 commits February 3, 2026 16:04
Update build tooling for shipjs-lib:

- rollup: 2.14.0 → 4.34.8
- rollup-plugin-commonjs → @rollup/[email protected]
- rollup-plugin-node-resolve → @rollup/[email protected]

Updated rollup.config.js to use the new scoped plugin packages
and createRequire for JSON imports (ESM compatible).

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Update linting tooling:

ESLint:
- eslint: 7.2.0 → 8.57.1
- eslint-config-algolia: 16.0.0 → 20.0.0
- eslint-config-prettier: 6.11.0 → 8.10.0
- eslint-plugin-import: 2.20.2 → 2.31.0
- eslint-plugin-jest: 23.13.2 → 27.9.0
- eslint-plugin-prettier: 3.1.3 → 4.2.1
- eslint-plugin-jsdoc: added 46.10.1

Parser:
- babel-eslint → @babel/[email protected]

Updated .eslintrc.cjs to use @babel/eslint-parser and disable
removed/incompatible rules.

Note: Prettier remains at 2.x due to ESM compatibility issues
with Jest. Prettier 3.x upgrade can be done in a future PR.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Auto-fixed lint errors from ESLint 8 stricter rules:
- import/order: Sorted imports by group (builtin, external, internal)
- import/newline-after-import: Added newlines after imports
- no-else-return: Removed unnecessary else after return
- jest/prefer-to-be: Use toBe/toBeNull for primitive checks

Also fixed a buggy mock in updateVersionMonorepo.spec.js that was
attempting to spy on a non-existent property.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Update testing and transpilation tooling:

Jest ecosystem:
- jest: 26.0.1 → 29.7.0
- babel-jest: 26.0.1 → 29.7.0
- jest-watch-typeahead: 0.6.0 → 2.2.2

Babel ecosystem (required for Jest 29 compatibility):
- @babel/core: 7.10.2 → 7.26.9
- @babel/preset-env: 7.10.2 → 7.26.9
- @babel/plugin-transform-runtime: 7.10.1 → 7.26.9
- @babel/runtime: ^7.6.3 → ^7.28.6

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Convert require() to dynamic import() in updateChangelog.js
- Replace .toString() with 'utf-8' encoding parameter in readFileSync calls
- Fix 'require' to 'import' in updateChangelog.spec.js

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Exclude test directories from security-focused rules. Tests legitimately
use dynamic paths (e.g., __dirname + path.resolve) to load fixtures,
which triggers false positive "path injection" warnings.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
- Update .nvmrc and .node-version to Node 20
- Update engines field in root and shipjs package.json to >=20
- Update CircleCI config to use cimg/node:20.18

Co-Authored-By: Claude Opus 4.5 <[email protected]>
@sarahdayan sarahdayan force-pushed the chore/update-node-20 branch from 39a93ec to db3b45e Compare February 3, 2026 15:06
Base automatically changed from chore/fix-commonjs to main February 3, 2026 16:10
@sarahdayan sarahdayan merged commit add8134 into main Feb 3, 2026
2 checks passed
@sarahdayan sarahdayan deleted the chore/update-node-20 branch February 3, 2026 16:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants