diff --git a/.github/workflows/a11y_tests.yml b/.github/workflows/a11y_tests.yml index bfb4de3f826..c94f4b9a4b4 100644 --- a/.github/workflows/a11y_tests.yml +++ b/.github/workflows/a11y_tests.yml @@ -41,7 +41,7 @@ jobs: - uses: actions/checkout@v5 - uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 24 - name: Install dependencies run: cd tests/playwright && npm ci && npm run install-deps - name: Run accessibility tests diff --git a/.github/workflows/integration_tests.yml b/.github/workflows/integration_tests.yml index d2056ab8f3f..fe4b9a69e63 100644 --- a/.github/workflows/integration_tests.yml +++ b/.github/workflows/integration_tests.yml @@ -108,7 +108,7 @@ jobs: - uses: actions/checkout@v5 - uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 24 - name: Install dependencies run: cd tests/playwright && npm ci && npm run install-deps - name: Run Playwright tests diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index 755bcbbed85..ea80e853d66 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -19,7 +19,7 @@ jobs: - uses: actions/checkout@v5 - uses: actions/setup-node@v4 with: - node-version: 20 + node-version: 24 cache: npm - name: "Install JS dependencies" run: npm ci diff --git a/Dockerfile b/Dockerfile index 646b80776ef..fb13a88f7db 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,7 +22,7 @@ RUN pip install --require-hashes --no-cache-dir -r requirements/prod.txt ######## # assets builder and dev server # -FROM node:20.14.0-slim AS assets +FROM node:24-slim AS assets ENV PATH=/app/node_modules/.bin:$PATH WORKDIR /app diff --git a/package-lock.json b/package-lock.json index af68b7e5cc7..794472bbd84 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,6 +47,10 @@ "stylelint-config-standard-scss": "^13.1.0", "svgo": "^4.0.0", "webpack-dev-server": "^5.2.2" + }, + "engines": { + "node": "^24.0.0", + "npm": "^11.6.4" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -86,7 +90,6 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -1550,7 +1553,6 @@ "url": "https://opencollective.com/csstools" } ], - "peer": true, "engines": { "node": ">=18" }, @@ -1573,7 +1575,6 @@ "url": "https://opencollective.com/csstools" } ], - "peer": true, "engines": { "node": ">=18" } @@ -2117,8 +2118,7 @@ "node_modules/@mozmeao/cookie-helper": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@mozmeao/cookie-helper/-/cookie-helper-1.1.0.tgz", - "integrity": "sha512-9eF1kckwlNw28pJhMcheE0jdMOJXgRnDOYkp0q86I16uoeyR5jhCT7B68EXWW1JFJILsX7tY0snZlAksTCp8hw==", - "peer": true + "integrity": "sha512-9eF1kckwlNw28pJhMcheE0jdMOJXgRnDOYkp0q86I16uoeyR5jhCT7B68EXWW1JFJILsX7tY0snZlAksTCp8hw==" }, "node_modules/@mozmeao/dnt-helper": { "version": "1.0.0", @@ -3006,7 +3006,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3366,7 +3365,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.25", "caniuse-lite": "^1.0.30001754", @@ -4627,7 +4625,6 @@ "integrity": "sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", @@ -6504,8 +6501,7 @@ "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.12.1.tgz", "integrity": "sha512-P/UbRZ0LKwXe7wEpwDheuhunPwITn4oPALhrJEQJo6756EwNGnsK/TSQrWojBB4cQDQ+VaxWYws9tFNDuiMh2Q==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/jest-util": { "version": "29.7.0", @@ -7504,7 +7500,6 @@ "url": "https://github.com/sponsors/ai" } ], - "peer": true, "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.1.0", @@ -8030,7 +8025,6 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -8628,7 +8622,6 @@ "version": "8.11.2", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.2.tgz", "integrity": "sha512-E4bfmKAhGiSTvMfL1Myyycaub+cUEU2/IvpylXkUu7CHBkBj1f/ikdzbD7YQ6FKUbixDxeYvB/xY4fvyroDlQg==", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -9245,7 +9238,6 @@ "url": "https://github.com/sponsors/stylelint" } ], - "peer": true, "dependencies": { "@csstools/css-parser-algorithms": "^3.0.1", "@csstools/css-tokenizer": "^3.0.1", @@ -9715,7 +9707,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -9782,8 +9773,7 @@ "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "peer": true + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/type-check": { "version": "0.4.0", @@ -9964,7 +9954,6 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.103.0.tgz", "integrity": "sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==", "license": "MIT", - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -10012,7 +10001,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-6.0.1.tgz", "integrity": "sha512-MfwFQ6SfwinsUVi0rNJm7rHZ31GyTcpVE5pgVA3hwFRb7COD4TzjUUwhGWKfO50+xdc2MQPuEBBJoqIMGt3JDw==", - "peer": true, "dependencies": { "@discoveryjs/json-ext": "^0.6.1", "@webpack-cli/configtest": "^3.0.1", diff --git a/package.json b/package.json index 64769d4166b..2040839165c 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,10 @@ "version": "0.1.0", "description": "Making mozilla.org awesome, one pebble at a time", "private": true, + "engines": { + "node": "^24.0.0", + "npm": "^11.6.4" + }, "dependencies": { "@babel/core": "^7.28.5", "@babel/preset-env": "^7.28.5",