Conversation
There was a problem hiding this comment.
Pull request overview
This PR updates the repository’s Node/TypeScript configuration and deployment tooling to target Node 24 across local dev, CI, Docker, and AWS Lambda infrastructure.
Changes:
- Bump Node-related TypeScript configs/types to Node 24 (
@tsconfig/node24,@types/node), and update shared tsconfigextends. - Update Docker base images and esbuild targets from Node 20 to Node 24 for the Lambda packages.
- Update Terraform Lambda runtimes from
nodejs20.xtonodejs24.x, plus CI Node version and local.nvmrc.
Reviewed changes
Copilot reviewed 23 out of 24 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
yarn.lock |
Lockfile updates reflecting Node 24 tsconfig/types and dependency graph changes. |
webhook/package.sh |
Updates esbuild target to Node 24. |
webhook/package.json |
Switches dev deps to @tsconfig/node24 and @types/node v24 range. |
webhook/Dockerfile |
Updates build image from Node 20 to Node 24. |
unpublisher/package.sh |
Updates esbuild target to Node 24. |
unpublisher/package.json |
Switches dev deps to @tsconfig/node24 and @types/node v24 range. |
unpublisher/Dockerfile |
Updates build image from Node 20 to Node 24. |
pipeline/package.sh |
Updates esbuild target to Node 24. |
pipeline/package.json |
Switches dev deps to @tsconfig/node24 and @types/node v24 range. |
pipeline/Dockerfile |
Updates build image from Node 20 to Node 24. |
tsconfig.base.json |
Base TS config now extends Node 24 defaults. |
common/tsconfig.json |
Common package TS config now extends Node 24 defaults. |
api/package.json |
Aligns @types/node dev dependency to the new v24 range. |
package.json |
Removes Node 20 tsconfig and retains Node 24 tsconfig at the workspace root. |
tooling.Dockerfile |
Updates tooling container base image to Node 24. |
infrastructure/prismic-snapshots/lambda_snapshot.tf |
Updates Lambda runtime to nodejs24.x. |
infrastructure/prismic-snapshots/lambda_backup_trigger.tf |
Updates Lambda runtime to nodejs24.x. |
infrastructure/prismic-snapshots/lambda_backup_download.tf |
Updates Lambda runtime to nodejs24.x. |
infrastructure/pipeline_stack/unpublisher_lambda.tf |
Updates Lambda runtime to nodejs24.x. |
infrastructure/pipeline_stack/pipeline_lambda.tf |
Updates Lambda runtime to nodejs24.x. |
.nvmrc |
Updates local dev Node version to v24.13.0. |
.github/workflows/tsc.yml |
Updates CI TypeScript job to run on Node 24. |
.github/dependabot.yml |
Removes ignores previously blocking Node-dependent updates. |
README.md |
Updates the README’s description of Content API endpoints/scope. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| # Content API | ||
|
|
||
| These are the services that back our [Content API](https://developers.wellcomecollection.org/api/content). The Content API exposes our non-catalogue content: at the moment, that's just articles, but in the future it might include endpoints for events, exhibitions, and functional content. | ||
| These are the services that back our [Content API](https://developers.wellcomecollection.org/api/content). The Content API exposes our non-catalogue content. There are endpoints for `articles`, `events`, and `all` (where `all` includes articles, books, events, exhibitions, exhibition texts, exhibition highlight tours (BSL), exhibition highlight tours (audio), pages, projects, seasons, and visual stories). |
There was a problem hiding this comment.
This README change is not related to the PR title (“Node 24”) and the PR description doesn’t mention documentation updates. Consider moving this README update to a separate docs PR, or update the PR description/title to reflect that it also changes the documented API surface.
There was a problem hiding this comment.
This was a change we did (rightly) but reverted when we reverted to Node 22, so readding it.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 28 out of 30 changed files in this pull request and generated no new comments.
Files not reviewed (1)
- infrastructure/.terraform.lock.hcl: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
What does this change?
Upgrade everything to Node 24.
I don't know if it's a bad idea to do it all in one go but as they use a shared tsconfig file, I thought I'd give it a try. (Edit: and it looks like we'd done it this way for Node 20)
I locked them to 24.13.0 to match our local version.
How to test
Test each service
cd api && rm -rf node_modules && yarn cache clean && yarn install && yarn testcd ../pipeline && rm -rf node_modules && yarn cache clean && yarn install && yarn testcd ../unpublisher && rm -rf node_modules && yarn cache clean && yarn install && yarn testWebhook
rm -rf node_modules && rm yarn.lock && yarncd webhook && yarn test(tests pass)cd .. && docker build -f webhook/Dockerfile -t webhook:test .(check it builds)docker run --rm webhook:test node --version(check it's v24)docker rmi webhook:test(remove the testing image)tooling.Dockerfile
docker compose build toolingdocker compose run --rm tooling yarn install --frozen-lockfiledocker compose run --rm tooling bash -c "yarn install --frozen-lockfile && yarn workspace @weco/content-pipeline run package"Infrastructure
cd infrastructure && terraform init(you might needterraform init -upgrade && terraform get -update)terraform planshouldn't show unexpected changes.At the moment I can see things I'm not sure about so would need someone a bit more in the know.
How can we measure success?
Up to date and aligned everywhere
Have we considered potential risks?
I mean, could be risky, and then we revert.