Skip to content

Commit d1d9517

Browse files
Add packageManager to created projects
Use npm_config_user_agent to persist the active tool and avoid Corepack warnings. Co-authored-by: Cursor <[email protected]>
1 parent 872a72c commit d1d9517

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

programs/create/lib/package-manager.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
type PackageManagerName = 'pnpm' | 'yarn' | 'npm'
22

3+
const userAgentPattern = /(pnpm|yarn|npm)\/([0-9]+\.[0-9]+\.[0-9]+[^ ]*)/i
4+
35
export function detectPackageManagerFromEnv(): PackageManagerName {
46
const userAgent = process.env.npm_config_user_agent || ''
57
if (userAgent.includes('pnpm')) return 'pnpm'
@@ -13,3 +15,17 @@ export function detectPackageManagerFromEnv(): PackageManagerName {
1315

1416
return 'npm'
1517
}
18+
19+
export function getPackageManagerSpecFromEnv(): string | null {
20+
const userAgent = process.env.npm_config_user_agent || ''
21+
const match = userAgent.match(userAgentPattern)
22+
23+
if (!match) return null
24+
25+
const name = match[1]
26+
const version = match[2]
27+
28+
if (!name || !version) return null
29+
30+
return `${name}@${version}`
31+
}

programs/create/steps/write-package-json.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import * as path from 'path'
1010
import * as fs from 'fs/promises'
1111
import * as messages from '../lib/messages'
12+
import {getPackageManagerSpecFromEnv} from '../lib/package-manager'
1213

1314
const extensionJsPackageJsonScripts = {
1415
dev:
@@ -71,10 +72,13 @@ export async function overridePackageJson(
7172
process.env.EXTENSION_ENV === 'development' ? '*' : `^${cliVersion}`
7273
}
7374

75+
const packageManagerSpec =
76+
packageJson.packageManager || getPackageManagerSpecFromEnv()
7477
const packageMetadata = {
7578
...packageJson,
7679
name: path.basename(projectPath),
7780
private: true,
81+
...(packageManagerSpec ? {packageManager: packageManagerSpec} : {}),
7882
scripts: {
7983
...packageJson.scripts,
8084
...extensionJsPackageJsonScripts

0 commit comments

Comments
 (0)