@@ -67,6 +67,25 @@ const nxPackages = [
67
67
68
68
type NxPackage = ( typeof nxPackages ) [ number ] ;
69
69
70
+ function getPackageManagerVersion ( packageManager : string ) : string {
71
+ try {
72
+ const version = execSync ( `${ packageManager } --version` , {
73
+ encoding : 'utf-8' ,
74
+ stdio : 'pipe' ,
75
+ } ) . trim ( ) ;
76
+ return `${ packageManager } @${ version } ` ;
77
+ } catch {
78
+ // Fallback to known working versions
79
+ const fallbackVersions = {
80
+
81
+
82
+
83
+
84
+ } ;
85
+ return fallbackVersions [ packageManager ] || `${ packageManager } @latest` ;
86
+ }
87
+ }
88
+
70
89
/**
71
90
* Sets up a new project in the temporary project path
72
91
* for the currently selected CLI.
@@ -107,10 +126,18 @@ export function newProject({
107
126
createNxWorkspaceEnd . name
108
127
) ;
109
128
129
+ // Ensure the package manager is correctly set in the created workspace
130
+ if ( packageManager ) {
131
+ updateJson ( `package.json` , ( json ) => {
132
+ json . packageManager = getPackageManagerVersion ( packageManager ) ;
133
+ return json ;
134
+ } ) ;
135
+ }
136
+
110
137
// Temporary hack to prevent installing with `--frozen-lockfile`
111
138
if ( isCI && packageManager === 'pnpm' ) {
112
139
updateFile (
113
- ' .npmrc' ,
140
+ ` .npmrc` ,
114
141
'prefer-frozen-lockfile=false\nstrict-peer-dependencies=false\nauto-install-peers=true'
115
142
) ;
116
143
}
@@ -129,7 +156,7 @@ export function newProject({
129
156
packageInstallEnd . name
130
157
) ;
131
158
// stop the daemon
132
- execSync ( `${ getPackageManagerCommand ( ) . runNx } reset` , {
159
+ execSync ( `${ getPackageManagerCommand ( { packageManager } ) . runNx } reset` , {
133
160
cwd : `${ e2eCwd } /proj` ,
134
161
stdio : isVerbose ( ) ? 'inherit' : 'pipe' ,
135
162
} ) ;
0 commit comments