action.yml 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. name: "Setup Node.js and pnpm"
  2. description: "Sets up Node.js and pnpm with caching and installs dependencies"
  3. inputs:
  4. node-version:
  5. description: "Node.js version to use"
  6. required: false
  7. default: "20.19.2"
  8. pnpm-version:
  9. description: "pnpm version to use"
  10. required: false
  11. default: "10.8.1"
  12. skip-install:
  13. description: "Skip dependency installation"
  14. required: false
  15. default: "false"
  16. install-args:
  17. description: "Additional arguments for pnpm install"
  18. required: false
  19. default: ""
  20. runs:
  21. using: "composite"
  22. steps:
  23. - name: Install pnpm
  24. uses: pnpm/action-setup@v4
  25. with:
  26. version: ${{ inputs.pnpm-version }}
  27. - name: Get pnpm store directory
  28. shell: bash
  29. run: |
  30. echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
  31. - name: Setup pnpm cache
  32. uses: actions/cache@v4
  33. with:
  34. path: ${{ env.STORE_PATH }}
  35. key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
  36. restore-keys: |
  37. ${{ runner.os }}-pnpm-store-
  38. - name: Setup Node.js
  39. uses: actions/setup-node@v4
  40. with:
  41. node-version: ${{ inputs.node-version }}
  42. - name: Install dependencies
  43. if: ${{ inputs.skip-install != 'true' }}
  44. shell: bash
  45. run: pnpm install ${{ inputs.install-args }}