@@ -19,31 +19,53 @@ inputs:
1919 default : true
2020
2121 package-manager :
22- description : " Package manager to use. Examples: npm, yarn, pnpm."
23- default : pnpm
22+ description : " Package manager to use. Examples: npm, yarn, pnpm. Leave empty to auto-detect. "
23+ default : " "
2424
2525runs :
2626 using : composite
2727 steps :
2828 - name : Checkout
29- uses : actions/checkout@v5
29+ uses : actions/checkout@v6
3030 with :
3131 persist-credentials : ${{ inputs.persist-credentials }}
3232 fetch-depth : " ${{ inputs.fetch-all == 'true' && '0' || '1' }}"
3333 submodules : " ${{ inputs.fetch-all == 'true' && 'recursive' || false }}"
3434
35+ - name : Auto detect package manager
36+ id : detect
37+ shell : bash
38+ run : |
39+ if [[ -n "${{ inputs.package-manager }}" ]]; then
40+ echo "pm=${{ inputs.package-manager }}" >> $GITHUB_OUTPUT
41+ exit 0
42+ fi
43+
44+ if [[ -f "pnpm-lock.yaml" ]]; then
45+ echo "pm=pnpm" >> $GITHUB_OUTPUT
46+ elif [[ -f "yarn.lock" ]]; then
47+ echo "pm=yarn" >> $GITHUB_OUTPUT
48+ elif [[ -f "package-lock.json" ]]; then
49+ echo "pm=npm" >> $GITHUB_OUTPUT
50+ else
51+ echo "No lock file found. Defaulting to pnpm."
52+ echo "pm=pnpm" >> $GITHUB_OUTPUT
53+ fi
54+
3555 - name : Install pnpm
36- if : ${{ inputs.package-manager == 'pnpm' }}
56+ if : ${{ steps.detect.outputs.pm == 'pnpm' }}
3757 uses : pnpm/action-setup@v4
3858
3959 - name : Setup node
4060 uses : actions/setup-node@v6
4161 with :
4262 node-version : ${{ inputs.node-version }}
43- cache : ${{ inputs.package-manager }}
63+ cache : ${{ steps.detect.outputs.pm }}
4464 registry-url : " https://registry.npmjs.org"
4565
4666 - name : Install dependencies
67+ if : ${{ inputs.auto-install == 'true' }}
4768 shell : bash
48- run : ${{ inputs.package-manager }} install
49- if : ${{ inputs.auto-install }}
69+ run : |
70+ echo "Using package manager: ${{ steps.detect.outputs.pm }}"
71+ ${{ steps.detect.outputs.pm }} install
0 commit comments