From bb0b097069d74bb9a60b534f03c0e35da540e32a Mon Sep 17 00:00:00 2001 From: per1234 Date: Tue, 15 Oct 2024 23:09:42 -0700 Subject: [PATCH 1/2] Configure npm to enforce standard project Node.js version This will produce an error if a contributor attempts to run an npm command in the project using an unsupported version of Node.js. --- .github/workflows/check-markdown-task.yml | 2 ++ .github/workflows/check-npm-task.yml | 2 ++ .github/workflows/check-prettier-formatting-task.yml | 2 ++ .npmrc | 3 +++ 4 files changed, 9 insertions(+) create mode 100644 .npmrc diff --git a/.github/workflows/check-markdown-task.yml b/.github/workflows/check-markdown-task.yml index 3c8f40c0..fa2c63b8 100644 --- a/.github/workflows/check-markdown-task.yml +++ b/.github/workflows/check-markdown-task.yml @@ -12,6 +12,7 @@ on: paths: - ".github/workflows/check-markdown-task.ya?ml" - ".markdown-link-check.json" + - "**/.npmrc" - "package.json" - "package-lock.json" - "Taskfile.ya?ml" @@ -24,6 +25,7 @@ on: paths: - ".github/workflows/check-markdown-task.ya?ml" - ".markdown-link-check.json" + - "**/.npmrc" - "package.json" - "package-lock.json" - "Taskfile.ya?ml" diff --git a/.github/workflows/check-npm-task.yml b/.github/workflows/check-npm-task.yml index e9f13782..4dd2a083 100644 --- a/.github/workflows/check-npm-task.yml +++ b/.github/workflows/check-npm-task.yml @@ -7,12 +7,14 @@ on: push: paths: - ".github/workflows/check-npm-task.ya?ml" + - "**/.npmrc" - "**/package.json" - "**/package-lock.json" - "Taskfile.ya?ml" pull_request: paths: - ".github/workflows/check-npm-task.ya?ml" + - "**/.npmrc" - "**/package.json" - "**/package-lock.json" - "Taskfile.ya?ml" diff --git a/.github/workflows/check-prettier-formatting-task.yml b/.github/workflows/check-prettier-formatting-task.yml index f3ef0ec8..f74f8315 100644 --- a/.github/workflows/check-prettier-formatting-task.yml +++ b/.github/workflows/check-prettier-formatting-task.yml @@ -8,6 +8,7 @@ on: paths: - ".github/workflows/check-prettier-formatting-task.ya?ml" - "Taskfile.ya?ml" + - "**/.npmrc" - "**/.prettierignore" - "**/.prettierrc*" # CSS @@ -104,6 +105,7 @@ on: paths: - ".github/workflows/check-prettier-formatting-task.ya?ml" - "Taskfile.ya?ml" + - "**/.npmrc" - "**/.prettierignore" - "**/.prettierrc*" # CSS diff --git a/.npmrc b/.npmrc new file mode 100644 index 00000000..2fc27b7e --- /dev/null +++ b/.npmrc @@ -0,0 +1,3 @@ +# See: https://docs.npmjs.com/cli/configuring-npm/npmrc + +engine-strict = true From 7a66fefff4dc36fdd76e71882289c9450e748512 Mon Sep 17 00:00:00 2001 From: per1234 Date: Tue, 15 Oct 2024 23:09:59 -0700 Subject: [PATCH 2/2] Install standard version of Node.js in "Check Website" workflow The "Check Website" workflow invokes the following chain of tasks: 1. `website:check` 2. `docs:generate` 3. `general:format-prettier` This makes the Prettier tool a dependency of the workflow, which in turn introduces a dependency on npm, and thus on Node.js. Previously, the workflow didn't contain a step to run the "actions/setup-node" action, so it used whichever version of npm happened to be installed in the runner machine, which happens to be 18.x currently. Now that the use of the project's standard Node.js version 20.x is enforced, this caused the workflow to fail spuriously: ``` task: [npm:install-deps] npm install npm error code EBADENGINE npm error engine Unsupported engine npm error engine Not compatible with your version of node/npm: undefined npm error notsup Not compatible with your version of node/npm: undefined npm error notsup Required: {"node":"20.x"} npm error notsup Actual: {"npm":"10.7.0","node":"v18.20.4"} ``` The problem is solved by adding an "actions/setup-node" action step to the workflow to install the correct version of Node.js. --- .github/workflows/check-mkdocs-task.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/check-mkdocs-task.yml b/.github/workflows/check-mkdocs-task.yml index 2cd3cc02..6397f0ab 100644 --- a/.github/workflows/check-mkdocs-task.yml +++ b/.github/workflows/check-mkdocs-task.yml @@ -13,8 +13,11 @@ on: push: paths: - ".github/workflows/check-mkdocs-task.ya?ml" + - "**/.npmrc" - "Taskfile.ya?ml" - "mkdocs.ya?ml" + - "package.json" + - "package-lock.json" - "poetry.lock" - "pyproject.toml" - "docs/**" @@ -24,8 +27,11 @@ on: pull_request: paths: - ".github/workflows/check-mkdocs-task.ya?ml" + - "**/.npmrc" - "Taskfile.ya?ml" - "mkdocs.ya?ml" + - "package.json" + - "package-lock.json" - "poetry.lock" - "pyproject.toml" - "docs/**" @@ -87,6 +93,11 @@ jobs: - name: Install Poetry run: pip install poetry + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version-file: package.json + - name: Install Task uses: arduino/setup-task@v2 with: