name: Setup NodeJS with package cache on: workflow_call: inputs: node-version-file: description: Path to the Node.js version file type: string required: false default: .nvmrc jobs: setup-node: name: Setup NodeJS runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/cache@v4 id: cache-modules with: path: | ~/.npm node_modules key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: | ${{ runner.os }}-node- - uses: actions/setup-node@v4 with: node-version-file: ${{ inputs.node-version-file }} cache: "npm" - if: steps.cache-modules.outputs.cache-hit != 'true' run: npm ci