-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathaction.yml
More file actions
60 lines (54 loc) 路 1.87 KB
/
Copy pathaction.yml
File metadata and controls
60 lines (54 loc) 路 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
name: Setup dependencies
description: Detect package manager, setup Node.js, and install dependencies
inputs:
node-version-file:
description: File to read Node.js version from
default: .nvmrc
node-version:
description: Explicit Node.js version; takes precedence over node-version-file when set
required: false
default: ""
pnpm-version:
description: pnpm version to use if pnpm is detected
default: "9.15.2"
outputs:
manager:
description: Detected package manager (pnpm, yarn, or npm)
value: ${{ steps.detect.outputs.manager }}
runner:
description: Command prefix for running scripts
value: ${{ steps.detect.outputs.runner }}
runs:
using: composite
steps:
- name: Detect package manager
id: detect
shell: bash
run: |
if [ -f "pnpm-lock.yaml" ]; then
echo "manager=pnpm" >> $GITHUB_OUTPUT
echo "command=install --frozen-lockfile" >> $GITHUB_OUTPUT
echo "runner=pnpm" >> $GITHUB_OUTPUT
elif [ -f "yarn.lock" ]; then
echo "manager=yarn" >> $GITHUB_OUTPUT
echo "command=install --frozen-lockfile" >> $GITHUB_OUTPUT
echo "runner=yarn" >> $GITHUB_OUTPUT
else
echo "manager=npm" >> $GITHUB_OUTPUT
echo "command=ci" >> $GITHUB_OUTPUT
echo "runner=npx --no-install" >> $GITHUB_OUTPUT
fi
- name: Setup pnpm
if: steps.detect.outputs.manager == 'pnpm'
uses: pnpm/action-setup@v4
with:
version: ${{ inputs.pnpm-version }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ inputs.node-version }}
node-version-file: ${{ inputs.node-version-file }}
cache: ${{ steps.detect.outputs.manager }}
- name: Install dependencies
shell: bash
run: ${{ steps.detect.outputs.manager }} ${{ steps.detect.outputs.command }}