1
0
mirror of https://github.com/pnpm/action-setup.git synced 2026-03-04 08:01:02 +08:00

Compare commits

...

4 Commits

Author SHA1 Message Date
Ben McCann
55775f85ac
Merge d5bd7e8c9a into e303250a24 2025-01-10 18:39:52 +08:00
Azat S.
e303250a24
docs: update pnpm version in readme examples (#154) 2025-01-09 00:42:18 +01:00
Ben McCann
d5bd7e8c9a
Update src/install-pnpm/run.ts 2024-06-12 08:37:26 -07:00
Ben McCann
44def7846a feat: detect pnpm version from lockfile 2024-05-28 12:08:13 -07:00
2 changed files with 30 additions and 4 deletions

View File

@ -80,7 +80,7 @@ jobs:
steps:
- uses: pnpm/action-setup@v4
with:
version: 9
version: 10
```
### Install only pnpm with `packageManager`
@ -116,7 +116,7 @@ jobs:
- uses: pnpm/action-setup@v4
with:
version: 9
version: 10
run_install: |
- recursive: true
args: [--frozen-lockfile, --strict-peer-dependencies]
@ -141,7 +141,7 @@ jobs:
- uses: pnpm/action-setup@v4
name: Install pnpm
with:
version: 9
version: 10
run_install: false
- name: Install Node.js

View File

@ -5,6 +5,7 @@ import { readFileSync } from 'fs'
import path from 'path'
import { execPath } from 'process'
import util from 'util'
import * as yaml from 'yaml'
import { Inputs } from '../inputs'
export async function runSelfInstaller(inputs: Inputs): Promise<number> {
@ -78,10 +79,18 @@ Otherwise, please specify the pnpm version in the action configuration.`)
}
if (typeof packageManager !== 'string') {
throw new Error(`No pnpm version is specified.
if (GITHUB_WORKSPACE) {
try {
const { lockfileVersion } = yaml.parse(readFileSync(path.join(GITHUB_WORKSPACE, 'pnpm-lock.yaml'), 'utf8'))
const version = getPnpmVersionFromLockfile(lockfileVersion);
return `${ standalone ? '@pnpm/exe' : 'pnpm' }@${version}`
} catch (error: unknown) {
throw new Error(`No pnpm version is specified.
Please specify it by one of the following ways:
- in the GitHub Action config with the key "version"
- in the package.json with the key "packageManager"`)
}
}
}
if (!packageManager.startsWith('pnpm@')) {
@ -95,4 +104,21 @@ Please specify it by one of the following ways:
return packageManager
}
function getPnpmVersionFromLockfile(
lockfileVersion: string | undefined
): string | undefined {
switch (true) {
case lockfileVersion === '5.3':
return 'latest-6';
case lockfileVersion === '5.4':
return 'latest-7';
case lockfileVersion === '6.0' || lockfileVersion === '6.1':
return 'latest-8';
case lockfileVersion === '7.0' || lockfileVersion === '9.0':
return 'latest-9';
default:
return undefined;
}
}
export default runSelfInstaller