name: "Setup Node" description: | Sets up the node environment for tests, builds, etc. inputs: directory: description: | The directory to run the setup in. required: false default: "site" runs: using: "composite" steps: - name: Install pnpm uses: pnpm/action-setup@739bfe42ca9233c5e6aca07c1a25a9d34aca49b0 # v6.0.7 - name: Setup Node uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: 22.19.0 # See https://github.com/actions/setup-node#caching-global-packages-data cache: "pnpm" cache-dependency-path: ${{ inputs.directory }}/pnpm-lock.yaml - name: Verify Node shell: bash run: | set -euo pipefail expected="v22.19.0" actual="$(node --version)" if [[ "$actual" != "$expected" ]]; then echo "::error::Expected Node.js $expected, but got $actual from $(command -v node)." exit 1 fi echo "Node.js $actual is active at $(command -v node)." - name: Install root node_modules shell: bash run: ./scripts/pnpm_install.sh - name: Install node_modules shell: bash run: ../scripts/pnpm_install.sh working-directory: ${{ inputs.directory }}