11import { read , argv } from 'argue-cli'
22
3+ const pnpm7 = 7
4+
35/**
46 * Detect package manager from environment.
57 * @returns Package manager name. 'npm` by default.
68 */
79export function detectPackageManager ( ) {
10+ const parsedUa = / ( ^ \w + ) (?: \/ ( \d + ) | ) / . exec ( process . env . npm_config_user_agent )
11+
12+ if ( parsedUa ) {
13+ const [
14+ ,
15+ pm ,
16+ ver
17+ ] = parsedUa
18+
19+ if ( pm ) {
20+ if ( pm === 'pnpm' && ver && Number ( ver ) >= pnpm7 ) {
21+ return 'pnpm >=7'
22+ }
23+
24+ return pm
25+ }
26+ }
27+
828 return (
9- / ^ \w + / . exec ( process . env . npm_config_user_agent ) ?. [ 0 ]
10- || / n o d e _ m o d u l e s [ / \\ ] ( \w + ) [ / \\ ] / . exec ( process . env . npm_execpath ) ?. [ 1 ]
29+ / n o d e _ m o d u l e s [ / \\ ] ( \w + ) [ / \\ ] / . exec ( process . env . npm_execpath ) ?. [ 1 ]
1130 || 'npm'
1231 )
1332}
@@ -19,7 +38,7 @@ export function detectPackageManager() {
1938 * @returns Args to run script with package manager.
2039 */
2140export function getRunArgs ( pm , args ) {
22- if ( pm === 'yarn' || args . length < 2 ) {
41+ if ( pm === 'yarn' || pm === 'pnpm >=7' || args . length < 2 ) {
2342 return [ 'run' , ...args ]
2443 }
2544
@@ -42,7 +61,7 @@ export function getRunArgs(pm, args) {
4261 */
4362export function getArgs ( pm , args , pkg ) {
4463 if ( pkg . scripts && ( args [ 0 ] in pkg . scripts ) ) {
45- return [ pm , getRunArgs ( pm , args ) ]
64+ return [ pm . split ( ' ' ) [ 0 ] , getRunArgs ( pm , args ) ]
4665 }
4766
4867 const [ bin , ...restArgs ] = args
0 commit comments