Skip to content

Commit 047a98f

Browse files
committed
feat(setup-js): auto detect package manager
1 parent 29e207c commit 047a98f

1 file changed

Lines changed: 29 additions & 7 deletions

File tree

setup-js/action.yml

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -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

2525
runs:
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

Comments
 (0)