@xylabs/ts-scripts-common 7.5.0 → 7.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/actions/index.mjs +197 -110
- package/dist/actions/index.mjs.map +1 -1
- package/dist/actions/packman/convert.mjs +187 -100
- package/dist/actions/packman/convert.mjs.map +1 -1
- package/dist/actions/packman/convertToPnpm.mjs +114 -38
- package/dist/actions/packman/convertToPnpm.mjs.map +1 -1
- package/dist/actions/packman/convertToYarn.mjs +104 -38
- package/dist/actions/packman/convertToYarn.mjs.map +1 -1
- package/dist/actions/packman/index.mjs +187 -100
- package/dist/actions/packman/index.mjs.map +1 -1
- package/dist/actions/packman/swapTsScriptsDependency.mjs +57 -0
- package/dist/actions/packman/swapTsScriptsDependency.mjs.map +1 -0
- package/dist/bin/xy.mjs +214 -127
- package/dist/bin/xy.mjs.map +1 -1
- package/dist/index.mjs +216 -129
- package/dist/index.mjs.map +1 -1
- package/dist/xy/common/index.mjs +187 -100
- package/dist/xy/common/index.mjs.map +1 -1
- package/dist/xy/common/packmanCommand.mjs +187 -100
- package/dist/xy/common/packmanCommand.mjs.map +1 -1
- package/dist/xy/index.mjs +214 -127
- package/dist/xy/index.mjs.map +1 -1
- package/dist/xy/xy.mjs +214 -127
- package/dist/xy/xy.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
// src/actions/packman/convert.ts
|
|
2
2
|
import {
|
|
3
|
-
existsSync as
|
|
3
|
+
existsSync as existsSync4,
|
|
4
4
|
readdirSync,
|
|
5
|
-
readFileSync as
|
|
5
|
+
readFileSync as readFileSync4,
|
|
6
6
|
statSync
|
|
7
7
|
} from "fs";
|
|
8
|
-
import
|
|
9
|
-
import
|
|
8
|
+
import PATH4 from "path";
|
|
9
|
+
import chalk4 from "chalk";
|
|
10
10
|
|
|
11
11
|
// src/actions/packman/convertToPnpm.ts
|
|
12
12
|
import {
|
|
13
|
-
existsSync,
|
|
13
|
+
existsSync as existsSync2,
|
|
14
14
|
mkdirSync,
|
|
15
|
-
readFileSync,
|
|
15
|
+
readFileSync as readFileSync2,
|
|
16
16
|
rmSync,
|
|
17
|
-
writeFileSync
|
|
17
|
+
writeFileSync as writeFileSync2
|
|
18
18
|
} from "fs";
|
|
19
|
-
import
|
|
20
|
-
import
|
|
19
|
+
import PATH2 from "path";
|
|
20
|
+
import chalk2 from "chalk";
|
|
21
21
|
|
|
22
22
|
// src/actions/packman/rewriteScripts.ts
|
|
23
23
|
function rewriteYarnToPnpm(script) {
|
|
@@ -67,6 +67,60 @@ function rewriteScriptsInPackageJson(pkg, direction) {
|
|
|
67
67
|
return { ...pkg, scripts: rewritten };
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
+
// src/actions/packman/swapTsScriptsDependency.ts
|
|
71
|
+
import {
|
|
72
|
+
existsSync,
|
|
73
|
+
readFileSync,
|
|
74
|
+
writeFileSync
|
|
75
|
+
} from "fs";
|
|
76
|
+
import PATH from "path";
|
|
77
|
+
import chalk from "chalk";
|
|
78
|
+
var SWAP_MAP = {
|
|
79
|
+
"yarn-to-pnpm": [
|
|
80
|
+
["@xylabs/ts-scripts-yarn3", "@xylabs/ts-scripts-pnpm"]
|
|
81
|
+
],
|
|
82
|
+
"pnpm-to-yarn": [
|
|
83
|
+
["@xylabs/ts-scripts-pnpm", "@xylabs/ts-scripts-yarn3"]
|
|
84
|
+
]
|
|
85
|
+
};
|
|
86
|
+
function swapInPackageJson(pkgPath, direction) {
|
|
87
|
+
if (!existsSync(pkgPath)) return false;
|
|
88
|
+
const raw = readFileSync(pkgPath, "utf8");
|
|
89
|
+
const pkg = JSON.parse(raw);
|
|
90
|
+
let changed = false;
|
|
91
|
+
for (const depField of ["dependencies", "devDependencies"]) {
|
|
92
|
+
const deps = pkg[depField];
|
|
93
|
+
if (!deps) continue;
|
|
94
|
+
for (const [from, to] of SWAP_MAP[direction]) {
|
|
95
|
+
if (deps[from]) {
|
|
96
|
+
deps[to] = deps[from];
|
|
97
|
+
delete deps[from];
|
|
98
|
+
changed = true;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (changed) {
|
|
103
|
+
writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + "\n", "utf8");
|
|
104
|
+
}
|
|
105
|
+
return changed;
|
|
106
|
+
}
|
|
107
|
+
function swapTsScriptsDependency(cwd, workspacePackageJsonPaths, direction) {
|
|
108
|
+
let count = 0;
|
|
109
|
+
if (swapInPackageJson(PATH.join(cwd, "package.json"), direction)) {
|
|
110
|
+
count++;
|
|
111
|
+
}
|
|
112
|
+
for (const pkgPath of workspacePackageJsonPaths) {
|
|
113
|
+
const fullPath = PATH.resolve(cwd, pkgPath, "package.json");
|
|
114
|
+
if (swapInPackageJson(fullPath, direction)) {
|
|
115
|
+
count++;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
if (count > 0) {
|
|
119
|
+
const target = direction === "yarn-to-pnpm" ? "@xylabs/ts-scripts-pnpm" : "@xylabs/ts-scripts-yarn3";
|
|
120
|
+
console.log(chalk.green(` Swapped ts-scripts dependency to ${target} in ${count} package(s)`));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
|
|
70
124
|
// src/actions/packman/convertToPnpm.ts
|
|
71
125
|
var PNPM_VERSION = "10.12.1";
|
|
72
126
|
function createPnpmWorkspaceYaml(cwd, workspacePatterns) {
|
|
@@ -74,24 +128,45 @@ function createPnpmWorkspaceYaml(cwd, workspacePatterns) {
|
|
|
74
128
|
for (const pattern of workspacePatterns) {
|
|
75
129
|
lines.push(` - '${pattern}'`);
|
|
76
130
|
}
|
|
77
|
-
|
|
78
|
-
console.log(
|
|
131
|
+
writeFileSync2(PATH2.join(cwd, "pnpm-workspace.yaml"), lines.join("\n") + "\n", "utf8");
|
|
132
|
+
console.log(chalk2.green(" Created pnpm-workspace.yaml"));
|
|
133
|
+
}
|
|
134
|
+
function readPnpmWorkspacePatterns(cwd) {
|
|
135
|
+
const wsPath = PATH2.join(cwd, "pnpm-workspace.yaml");
|
|
136
|
+
if (!existsSync2(wsPath)) return [];
|
|
137
|
+
const content = readFileSync2(wsPath, "utf8");
|
|
138
|
+
const patterns = [];
|
|
139
|
+
const lines = content.split("\n");
|
|
140
|
+
let inPackages = false;
|
|
141
|
+
for (const line of lines) {
|
|
142
|
+
if (line.trim() === "packages:") {
|
|
143
|
+
inPackages = true;
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
if (inPackages && /^\s+-\s+/.test(line)) {
|
|
147
|
+
const pattern = line.replace(/^\s+-\s+/, "").replaceAll(/['"]/g, "").trim();
|
|
148
|
+
if (pattern) patterns.push(pattern);
|
|
149
|
+
} else if (inPackages && !/^\s/.test(line) && line.trim()) {
|
|
150
|
+
inPackages = false;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
return patterns;
|
|
79
154
|
}
|
|
80
155
|
function updateRootPackageJson(cwd) {
|
|
81
|
-
const pkgPath =
|
|
82
|
-
const pkg = JSON.parse(
|
|
83
|
-
const workspacePatterns = pkg.workspaces ??
|
|
156
|
+
const pkgPath = PATH2.join(cwd, "package.json");
|
|
157
|
+
const pkg = JSON.parse(readFileSync2(pkgPath, "utf8"));
|
|
158
|
+
const workspacePatterns = pkg.workspaces ?? readPnpmWorkspacePatterns(cwd);
|
|
84
159
|
delete pkg.workspaces;
|
|
85
160
|
pkg.packageManager = `pnpm@${PNPM_VERSION}`;
|
|
86
161
|
const updated = rewriteScriptsInPackageJson(pkg, "yarn-to-pnpm");
|
|
87
|
-
|
|
88
|
-
console.log(
|
|
162
|
+
writeFileSync2(pkgPath, JSON.stringify(updated, null, 2) + "\n", "utf8");
|
|
163
|
+
console.log(chalk2.green(" Updated root package.json"));
|
|
89
164
|
return workspacePatterns;
|
|
90
165
|
}
|
|
91
166
|
function updateGitignore(cwd) {
|
|
92
|
-
const gitignorePath =
|
|
93
|
-
if (!
|
|
94
|
-
let content =
|
|
167
|
+
const gitignorePath = PATH2.join(cwd, ".gitignore");
|
|
168
|
+
if (!existsSync2(gitignorePath)) return;
|
|
169
|
+
let content = readFileSync2(gitignorePath, "utf8");
|
|
95
170
|
const yarnLines = [
|
|
96
171
|
".pnp.*",
|
|
97
172
|
".pnp",
|
|
@@ -106,63 +181,64 @@ function updateGitignore(cwd) {
|
|
|
106
181
|
content = content.replaceAll(new RegExp(String.raw`^${line.replaceAll(".", String.raw`\.`).replaceAll("*", String.raw`\*`).replaceAll("!", String.raw`\!`)}\s*$`, "gm"), "");
|
|
107
182
|
}
|
|
108
183
|
content = content.replaceAll(/\n{3,}/g, "\n\n");
|
|
109
|
-
|
|
110
|
-
console.log(
|
|
184
|
+
writeFileSync2(gitignorePath, content, "utf8");
|
|
185
|
+
console.log(chalk2.green(" Updated .gitignore"));
|
|
111
186
|
}
|
|
112
187
|
function deleteYarnArtifacts(cwd) {
|
|
113
|
-
const yarnLock =
|
|
114
|
-
const yarnrc =
|
|
115
|
-
const yarnDir =
|
|
116
|
-
if (
|
|
188
|
+
const yarnLock = PATH2.join(cwd, "yarn.lock");
|
|
189
|
+
const yarnrc = PATH2.join(cwd, ".yarnrc.yml");
|
|
190
|
+
const yarnDir = PATH2.join(cwd, ".yarn");
|
|
191
|
+
if (existsSync2(yarnLock)) {
|
|
117
192
|
rmSync(yarnLock);
|
|
118
|
-
console.log(
|
|
193
|
+
console.log(chalk2.gray(" Deleted yarn.lock"));
|
|
119
194
|
}
|
|
120
|
-
if (
|
|
195
|
+
if (existsSync2(yarnrc)) {
|
|
121
196
|
rmSync(yarnrc);
|
|
122
|
-
console.log(
|
|
197
|
+
console.log(chalk2.gray(" Deleted .yarnrc.yml"));
|
|
123
198
|
}
|
|
124
|
-
if (
|
|
199
|
+
if (existsSync2(yarnDir)) {
|
|
125
200
|
rmSync(yarnDir, { force: true, recursive: true });
|
|
126
|
-
console.log(
|
|
201
|
+
console.log(chalk2.gray(" Deleted .yarn/"));
|
|
127
202
|
}
|
|
128
203
|
}
|
|
129
204
|
function createNpmrc(cwd) {
|
|
130
|
-
const npmrcPath =
|
|
131
|
-
if (
|
|
132
|
-
mkdirSync(
|
|
133
|
-
|
|
134
|
-
console.log(
|
|
205
|
+
const npmrcPath = PATH2.join(cwd, ".npmrc");
|
|
206
|
+
if (existsSync2(npmrcPath)) return;
|
|
207
|
+
mkdirSync(PATH2.dirname(npmrcPath), { recursive: true });
|
|
208
|
+
writeFileSync2(npmrcPath, "", "utf8");
|
|
209
|
+
console.log(chalk2.green(" Created .npmrc"));
|
|
135
210
|
}
|
|
136
211
|
function convertToPnpm(cwd, workspacePackageJsonPaths) {
|
|
137
|
-
console.log(
|
|
212
|
+
console.log(chalk2.blue("\nConverting to pnpm...\n"));
|
|
138
213
|
const workspacePatterns = updateRootPackageJson(cwd);
|
|
139
214
|
createPnpmWorkspaceYaml(cwd, workspacePatterns);
|
|
140
215
|
for (const pkgPath of workspacePackageJsonPaths) {
|
|
141
|
-
const fullPath =
|
|
142
|
-
if (!
|
|
143
|
-
const pkg = JSON.parse(
|
|
216
|
+
const fullPath = PATH2.resolve(cwd, pkgPath, "package.json");
|
|
217
|
+
if (!existsSync2(fullPath)) continue;
|
|
218
|
+
const pkg = JSON.parse(readFileSync2(fullPath, "utf8"));
|
|
144
219
|
const updated = rewriteScriptsInPackageJson(pkg, "yarn-to-pnpm");
|
|
145
220
|
if (JSON.stringify(pkg) !== JSON.stringify(updated)) {
|
|
146
|
-
|
|
221
|
+
writeFileSync2(fullPath, JSON.stringify(updated, null, 2) + "\n", "utf8");
|
|
147
222
|
}
|
|
148
223
|
}
|
|
149
|
-
console.log(
|
|
224
|
+
console.log(chalk2.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`));
|
|
150
225
|
updateGitignore(cwd);
|
|
151
226
|
createNpmrc(cwd);
|
|
227
|
+
swapTsScriptsDependency(cwd, workspacePackageJsonPaths, "yarn-to-pnpm");
|
|
152
228
|
deleteYarnArtifacts(cwd);
|
|
153
|
-
console.log(
|
|
229
|
+
console.log(chalk2.blue("\nConversion complete. Run `pnpm install` to generate pnpm-lock.yaml.\n"));
|
|
154
230
|
return 0;
|
|
155
231
|
}
|
|
156
232
|
|
|
157
233
|
// src/actions/packman/convertToYarn.ts
|
|
158
234
|
import {
|
|
159
|
-
existsSync as
|
|
160
|
-
readFileSync as
|
|
235
|
+
existsSync as existsSync3,
|
|
236
|
+
readFileSync as readFileSync3,
|
|
161
237
|
rmSync as rmSync2,
|
|
162
|
-
writeFileSync as
|
|
238
|
+
writeFileSync as writeFileSync3
|
|
163
239
|
} from "fs";
|
|
164
|
-
import
|
|
165
|
-
import
|
|
240
|
+
import PATH3 from "path";
|
|
241
|
+
import chalk3 from "chalk";
|
|
166
242
|
var YARN_VERSION = "4.13.0";
|
|
167
243
|
var YARNRC_TEMPLATE = `compressionLevel: mixed
|
|
168
244
|
|
|
@@ -183,10 +259,10 @@ var YARN_GITIGNORE_ENTRIES = `
|
|
|
183
259
|
!.yarn/sdks
|
|
184
260
|
!.yarn/versions
|
|
185
261
|
`;
|
|
186
|
-
function
|
|
187
|
-
const wsPath =
|
|
188
|
-
if (!
|
|
189
|
-
const content =
|
|
262
|
+
function readPnpmWorkspacePatterns2(cwd) {
|
|
263
|
+
const wsPath = PATH3.join(cwd, "pnpm-workspace.yaml");
|
|
264
|
+
if (!existsSync3(wsPath)) return [];
|
|
265
|
+
const content = readFileSync3(wsPath, "utf8");
|
|
190
266
|
const patterns = [];
|
|
191
267
|
const lines = content.split("\n");
|
|
192
268
|
let inPackages = false;
|
|
@@ -205,91 +281,103 @@ function readPnpmWorkspacePatterns(cwd) {
|
|
|
205
281
|
return patterns;
|
|
206
282
|
}
|
|
207
283
|
function updateRootPackageJson2(cwd, workspacePatterns) {
|
|
208
|
-
const pkgPath =
|
|
209
|
-
const pkg = JSON.parse(
|
|
284
|
+
const pkgPath = PATH3.join(cwd, "package.json");
|
|
285
|
+
const pkg = JSON.parse(readFileSync3(pkgPath, "utf8"));
|
|
210
286
|
pkg.workspaces = workspacePatterns;
|
|
211
287
|
pkg.packageManager = `yarn@${YARN_VERSION}`;
|
|
212
288
|
const updated = rewriteScriptsInPackageJson(pkg, "pnpm-to-yarn");
|
|
213
|
-
|
|
214
|
-
console.log(
|
|
289
|
+
writeFileSync3(pkgPath, JSON.stringify(updated, null, 2) + "\n", "utf8");
|
|
290
|
+
console.log(chalk3.green(" Updated root package.json"));
|
|
215
291
|
}
|
|
216
292
|
function updateGitignore2(cwd) {
|
|
217
|
-
const gitignorePath =
|
|
218
|
-
let content =
|
|
293
|
+
const gitignorePath = PATH3.join(cwd, ".gitignore");
|
|
294
|
+
let content = existsSync3(gitignorePath) ? readFileSync3(gitignorePath, "utf8") : "";
|
|
219
295
|
if (!content.includes(".yarn/*")) {
|
|
220
296
|
content = content.trimEnd() + "\n" + YARN_GITIGNORE_ENTRIES;
|
|
221
297
|
}
|
|
222
|
-
|
|
223
|
-
console.log(
|
|
298
|
+
writeFileSync3(gitignorePath, content, "utf8");
|
|
299
|
+
console.log(chalk3.green(" Updated .gitignore"));
|
|
224
300
|
}
|
|
225
301
|
function deletePnpmArtifacts(cwd) {
|
|
226
|
-
const lockfile =
|
|
227
|
-
const workspaceYaml =
|
|
228
|
-
const npmrc =
|
|
229
|
-
if (
|
|
302
|
+
const lockfile = PATH3.join(cwd, "pnpm-lock.yaml");
|
|
303
|
+
const workspaceYaml = PATH3.join(cwd, "pnpm-workspace.yaml");
|
|
304
|
+
const npmrc = PATH3.join(cwd, ".npmrc");
|
|
305
|
+
if (existsSync3(lockfile)) {
|
|
230
306
|
rmSync2(lockfile);
|
|
231
|
-
console.log(
|
|
307
|
+
console.log(chalk3.gray(" Deleted pnpm-lock.yaml"));
|
|
232
308
|
}
|
|
233
|
-
if (
|
|
309
|
+
if (existsSync3(workspaceYaml)) {
|
|
234
310
|
rmSync2(workspaceYaml);
|
|
235
|
-
console.log(
|
|
311
|
+
console.log(chalk3.gray(" Deleted pnpm-workspace.yaml"));
|
|
236
312
|
}
|
|
237
|
-
if (
|
|
238
|
-
const content =
|
|
313
|
+
if (existsSync3(npmrc)) {
|
|
314
|
+
const content = readFileSync3(npmrc, "utf8");
|
|
239
315
|
if (content.trim() === "" || content.includes("shamefully-hoist") || content.includes("node-linker")) {
|
|
240
316
|
rmSync2(npmrc);
|
|
241
|
-
console.log(
|
|
317
|
+
console.log(chalk3.gray(" Deleted .npmrc"));
|
|
242
318
|
}
|
|
243
319
|
}
|
|
244
320
|
}
|
|
245
321
|
function createYarnrc(cwd) {
|
|
246
|
-
const yarnrcPath =
|
|
247
|
-
if (
|
|
248
|
-
|
|
249
|
-
console.log(
|
|
322
|
+
const yarnrcPath = PATH3.join(cwd, ".yarnrc.yml");
|
|
323
|
+
if (existsSync3(yarnrcPath)) return;
|
|
324
|
+
writeFileSync3(yarnrcPath, YARNRC_TEMPLATE, "utf8");
|
|
325
|
+
console.log(chalk3.green(" Created .yarnrc.yml"));
|
|
326
|
+
}
|
|
327
|
+
function readWorkspacePatternsFromPackageJson(cwd) {
|
|
328
|
+
const pkgPath = PATH3.join(cwd, "package.json");
|
|
329
|
+
if (!existsSync3(pkgPath)) return [];
|
|
330
|
+
const pkg = JSON.parse(readFileSync3(pkgPath, "utf8"));
|
|
331
|
+
return pkg.workspaces ?? [];
|
|
250
332
|
}
|
|
251
333
|
function convertToYarn(cwd, workspacePackageJsonPaths) {
|
|
252
|
-
console.log(
|
|
253
|
-
const workspacePatterns =
|
|
334
|
+
console.log(chalk3.blue("\nConverting to yarn...\n"));
|
|
335
|
+
const workspacePatterns = readPnpmWorkspacePatterns2(cwd);
|
|
254
336
|
if (workspacePatterns.length === 0) {
|
|
255
|
-
|
|
337
|
+
const fromPkg = readWorkspacePatternsFromPackageJson(cwd);
|
|
338
|
+
if (fromPkg.length > 0) {
|
|
339
|
+
workspacePatterns.push(...fromPkg);
|
|
340
|
+
} else {
|
|
341
|
+
console.warn(chalk3.yellow(" No workspace patterns found"));
|
|
342
|
+
}
|
|
256
343
|
}
|
|
257
344
|
updateRootPackageJson2(cwd, workspacePatterns);
|
|
258
345
|
for (const pkgPath of workspacePackageJsonPaths) {
|
|
259
|
-
const fullPath =
|
|
260
|
-
if (!
|
|
261
|
-
const pkg = JSON.parse(
|
|
346
|
+
const fullPath = PATH3.resolve(cwd, pkgPath, "package.json");
|
|
347
|
+
if (!existsSync3(fullPath)) continue;
|
|
348
|
+
const pkg = JSON.parse(readFileSync3(fullPath, "utf8"));
|
|
262
349
|
const updated = rewriteScriptsInPackageJson(pkg, "pnpm-to-yarn");
|
|
263
350
|
if (JSON.stringify(pkg) !== JSON.stringify(updated)) {
|
|
264
|
-
|
|
351
|
+
writeFileSync3(fullPath, JSON.stringify(updated, null, 2) + "\n", "utf8");
|
|
265
352
|
}
|
|
266
353
|
}
|
|
267
|
-
console.log(
|
|
354
|
+
console.log(chalk3.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`));
|
|
268
355
|
updateGitignore2(cwd);
|
|
269
356
|
createYarnrc(cwd);
|
|
357
|
+
swapTsScriptsDependency(cwd, workspacePackageJsonPaths, "pnpm-to-yarn");
|
|
270
358
|
deletePnpmArtifacts(cwd);
|
|
271
|
-
console.log(
|
|
359
|
+
console.log(chalk3.blue("\nConversion complete. Run `corepack enable yarn && yarn set version stable && yarn install` to finish setup.\n"));
|
|
272
360
|
return 0;
|
|
273
361
|
}
|
|
274
362
|
|
|
275
363
|
// src/actions/packman/convert.ts
|
|
276
364
|
function detectCurrentPM(cwd) {
|
|
277
|
-
if (
|
|
365
|
+
if (existsSync4(PATH4.join(cwd, "pnpm-lock.yaml")) || existsSync4(PATH4.join(cwd, "pnpm-workspace.yaml"))) {
|
|
278
366
|
return "pnpm";
|
|
279
367
|
}
|
|
280
|
-
if (
|
|
368
|
+
if (existsSync4(PATH4.join(cwd, "yarn.lock")) || existsSync4(PATH4.join(cwd, ".yarnrc.yml"))) {
|
|
281
369
|
return "yarn";
|
|
282
370
|
}
|
|
283
371
|
return "unknown";
|
|
284
372
|
}
|
|
285
373
|
function findWorkspacePackagePaths(cwd) {
|
|
286
|
-
const pkgPath =
|
|
287
|
-
const pkg = JSON.parse(
|
|
374
|
+
const pkgPath = PATH4.join(cwd, "package.json");
|
|
375
|
+
const pkg = JSON.parse(readFileSync4(pkgPath, "utf8"));
|
|
288
376
|
let patterns = pkg.workspaces ?? [];
|
|
289
377
|
if (patterns.length === 0) {
|
|
290
|
-
const wsPath =
|
|
291
|
-
if (
|
|
292
|
-
const content =
|
|
378
|
+
const wsPath = PATH4.join(cwd, "pnpm-workspace.yaml");
|
|
379
|
+
if (existsSync4(wsPath)) {
|
|
380
|
+
const content = readFileSync4(wsPath, "utf8");
|
|
293
381
|
const lines = content.split("\n");
|
|
294
382
|
let inPackages = false;
|
|
295
383
|
for (const line of lines) {
|
|
@@ -319,15 +407,15 @@ function resolveWorkspaceGlob(cwd, pattern) {
|
|
|
319
407
|
}
|
|
320
408
|
function walkGlob(basePath, parts, currentPath) {
|
|
321
409
|
if (parts.length === 0) {
|
|
322
|
-
const fullPath =
|
|
323
|
-
if (
|
|
410
|
+
const fullPath = PATH4.join(basePath, currentPath);
|
|
411
|
+
if (existsSync4(PATH4.join(fullPath, "package.json"))) {
|
|
324
412
|
return [currentPath];
|
|
325
413
|
}
|
|
326
414
|
return [];
|
|
327
415
|
}
|
|
328
416
|
const [part, ...rest] = parts;
|
|
329
|
-
const dirPath =
|
|
330
|
-
if (!
|
|
417
|
+
const dirPath = PATH4.join(basePath, currentPath);
|
|
418
|
+
if (!existsSync4(dirPath) || !statSync(dirPath).isDirectory()) {
|
|
331
419
|
return [];
|
|
332
420
|
}
|
|
333
421
|
if (part === "*" || part === "**") {
|
|
@@ -355,26 +443,25 @@ function walkGlob(basePath, parts, currentPath) {
|
|
|
355
443
|
function convert({ target, verbose }) {
|
|
356
444
|
const validTargets = ["pnpm", "yarn"];
|
|
357
445
|
if (!validTargets.includes(target)) {
|
|
358
|
-
console.error(
|
|
446
|
+
console.error(chalk4.red(`Invalid target "${target}". Must be one of: ${validTargets.join(", ")}`));
|
|
359
447
|
return 1;
|
|
360
448
|
}
|
|
361
449
|
const cwd = process.cwd();
|
|
362
450
|
const currentPM = detectCurrentPM(cwd);
|
|
363
451
|
if (verbose) {
|
|
364
|
-
console.log(
|
|
365
|
-
console.log(
|
|
452
|
+
console.log(chalk4.gray(`Current package manager: ${currentPM}`));
|
|
453
|
+
console.log(chalk4.gray(`Target package manager: ${target}`));
|
|
366
454
|
}
|
|
367
455
|
if (currentPM === target) {
|
|
368
|
-
console.
|
|
369
|
-
return 1;
|
|
456
|
+
console.log(chalk4.yellow(`Already using ${target}. Re-applying conversion to fix any incomplete steps...`));
|
|
370
457
|
}
|
|
371
458
|
if (currentPM === "unknown") {
|
|
372
|
-
console.error(
|
|
459
|
+
console.error(chalk4.red("Could not detect current package manager. No yarn.lock or pnpm-lock.yaml found."));
|
|
373
460
|
return 1;
|
|
374
461
|
}
|
|
375
462
|
const workspacePaths = findWorkspacePackagePaths(cwd);
|
|
376
463
|
if (verbose) {
|
|
377
|
-
console.log(
|
|
464
|
+
console.log(chalk4.gray(`Found ${workspacePaths.length} workspace packages`));
|
|
378
465
|
}
|
|
379
466
|
if (target === "pnpm") {
|
|
380
467
|
return convertToPnpm(cwd, workspacePaths);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/packman/convert.ts","../../../src/actions/packman/convertToPnpm.ts","../../../src/actions/packman/rewriteScripts.ts","../../../src/actions/packman/convertToYarn.ts"],"sourcesContent":["import {\n existsSync, readdirSync, readFileSync, statSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { convertToPnpm } from './convertToPnpm.ts'\nimport { convertToYarn } from './convertToYarn.ts'\n\ntype TargetPM = 'pnpm' | 'yarn'\n\nexport interface ConvertParams {\n target: string\n verbose?: boolean\n}\n\nfunction detectCurrentPM(cwd: string): 'pnpm' | 'yarn' | 'unknown' {\n if (existsSync(PATH.join(cwd, 'pnpm-lock.yaml')) || existsSync(PATH.join(cwd, 'pnpm-workspace.yaml'))) {\n return 'pnpm'\n }\n if (existsSync(PATH.join(cwd, 'yarn.lock')) || existsSync(PATH.join(cwd, '.yarnrc.yml'))) {\n return 'yarn'\n }\n return 'unknown'\n}\n\nfunction findWorkspacePackagePaths(cwd: string): string[] {\n // Read workspace patterns from package.json or pnpm-workspace.yaml\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))\n\n let patterns: string[] = pkg.workspaces ?? []\n\n // Also try pnpm-workspace.yaml\n if (patterns.length === 0) {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (existsSync(wsPath)) {\n const content = readFileSync(wsPath, 'utf8')\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n }\n }\n\n // Resolve glob patterns to actual package directories\n const dirs: string[] = []\n for (const pattern of patterns) {\n const resolved = resolveWorkspaceGlob(cwd, pattern)\n dirs.push(...resolved)\n }\n return dirs\n}\n\nfunction resolveWorkspaceGlob(cwd: string, pattern: string): string[] {\n // Simple glob resolution for workspace patterns like \"packages/*\" or \"packages/**/*\"\n const parts = pattern.split('/')\n return walkGlob(cwd, parts, '')\n}\n\nfunction walkGlob(basePath: string, parts: string[], currentPath: string): string[] {\n if (parts.length === 0) {\n // Check if this path has a package.json\n const fullPath = PATH.join(basePath, currentPath)\n if (existsSync(PATH.join(fullPath, 'package.json'))) {\n return [currentPath]\n }\n return []\n }\n\n const [part, ...rest] = parts\n const dirPath = PATH.join(basePath, currentPath)\n\n if (!existsSync(dirPath) || !statSync(dirPath).isDirectory()) {\n return []\n }\n\n if (part === '*' || part === '**') {\n const entries = readdirSync(dirPath, { withFileTypes: true })\n .filter(e => e.isDirectory() && !e.name.startsWith('.') && e.name !== 'node_modules' && e.name !== 'dist')\n const results: string[] = []\n\n if (part === '**') {\n // ** can match zero segments — try skipping it\n results.push(...walkGlob(basePath, rest, currentPath))\n }\n\n for (const entry of entries) {\n const subPath = currentPath ? `${currentPath}/${entry.name}` : entry.name\n if (part === '**') {\n // ** matches any depth — try both continuing with rest and recursing deeper\n results.push(\n ...walkGlob(basePath, rest, subPath),\n ...walkGlob(basePath, parts, subPath),\n )\n } else {\n results.push(...walkGlob(basePath, rest, subPath))\n }\n }\n return results\n }\n\n const subPath = currentPath ? `${currentPath}/${part}` : part\n return walkGlob(basePath, rest, subPath)\n}\n\nexport function convert({ target, verbose }: ConvertParams): number {\n const validTargets: TargetPM[] = ['pnpm', 'yarn']\n if (!validTargets.includes(target as TargetPM)) {\n console.error(chalk.red(`Invalid target \"${target}\". Must be one of: ${validTargets.join(', ')}`))\n return 1\n }\n\n const cwd = process.cwd()\n const currentPM = detectCurrentPM(cwd)\n\n if (verbose) {\n console.log(chalk.gray(`Current package manager: ${currentPM}`))\n console.log(chalk.gray(`Target package manager: ${target}`))\n }\n\n if (currentPM === target) {\n console.error(chalk.red(`Already using ${target}. No conversion needed.`))\n return 1\n }\n\n if (currentPM === 'unknown') {\n console.error(chalk.red('Could not detect current package manager. No yarn.lock or pnpm-lock.yaml found.'))\n return 1\n }\n\n // Find all workspace package paths\n const workspacePaths = findWorkspacePackagePaths(cwd)\n if (verbose) {\n console.log(chalk.gray(`Found ${workspacePaths.length} workspace packages`))\n }\n\n if (target === 'pnpm') {\n return convertToPnpm(cwd, workspacePaths)\n }\n return convertToYarn(cwd, workspacePaths)\n}\n","import {\n existsSync, mkdirSync, readFileSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { rewriteScriptsInPackageJson } from './rewriteScripts.ts'\n\nconst PNPM_VERSION = '10.12.1'\n\nfunction createPnpmWorkspaceYaml(cwd: string, workspacePatterns: string[]): void {\n const lines = ['packages:']\n for (const pattern of workspacePatterns) {\n lines.push(` - '${pattern}'`)\n }\n writeFileSync(PATH.join(cwd, 'pnpm-workspace.yaml'), lines.join('\\n') + '\\n', 'utf8')\n console.log(chalk.green(' Created pnpm-workspace.yaml'))\n}\n\nfunction updateRootPackageJson(cwd: string): string[] {\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))\n\n // Save workspace patterns before removing\n const workspacePatterns: string[] = pkg.workspaces ?? []\n\n // Remove yarn workspaces field (pnpm uses pnpm-workspace.yaml)\n delete pkg.workspaces\n\n // Update packageManager\n pkg.packageManager = `pnpm@${PNPM_VERSION}`\n\n // Rewrite scripts\n const updated = rewriteScriptsInPackageJson(pkg, 'yarn-to-pnpm')\n\n writeFileSync(pkgPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n console.log(chalk.green(' Updated root package.json'))\n\n return workspacePatterns\n}\n\nfunction updateGitignore(cwd: string): void {\n const gitignorePath = PATH.join(cwd, '.gitignore')\n if (!existsSync(gitignorePath)) return\n\n let content = readFileSync(gitignorePath, 'utf8')\n\n // Remove yarn-specific entries\n const yarnLines = [\n '.pnp.*',\n '.pnp',\n '.yarn/*',\n '!.yarn/patches',\n '!.yarn/plugins',\n '!.yarn/releases',\n '!.yarn/sdks',\n '!.yarn/versions',\n ]\n for (const line of yarnLines) {\n content = content.replaceAll(new RegExp(String.raw`^${line.replaceAll('.', String.raw`\\.`).replaceAll('*', String.raw`\\*`).replaceAll('!', String.raw`\\!`)}\\s*$`, 'gm'), '')\n }\n\n // Clean up multiple blank lines\n content = content.replaceAll(/\\n{3,}/g, '\\n\\n')\n\n writeFileSync(gitignorePath, content, 'utf8')\n console.log(chalk.green(' Updated .gitignore'))\n}\n\nfunction deleteYarnArtifacts(cwd: string): void {\n const yarnLock = PATH.join(cwd, 'yarn.lock')\n const yarnrc = PATH.join(cwd, '.yarnrc.yml')\n const yarnDir = PATH.join(cwd, '.yarn')\n\n if (existsSync(yarnLock)) {\n rmSync(yarnLock)\n console.log(chalk.gray(' Deleted yarn.lock'))\n }\n if (existsSync(yarnrc)) {\n rmSync(yarnrc)\n console.log(chalk.gray(' Deleted .yarnrc.yml'))\n }\n if (existsSync(yarnDir)) {\n rmSync(yarnDir, { force: true, recursive: true })\n console.log(chalk.gray(' Deleted .yarn/'))\n }\n}\n\nfunction createNpmrc(cwd: string): void {\n const npmrcPath = PATH.join(cwd, '.npmrc')\n if (existsSync(npmrcPath)) return\n\n mkdirSync(PATH.dirname(npmrcPath), { recursive: true })\n writeFileSync(npmrcPath, '', 'utf8')\n console.log(chalk.green(' Created .npmrc'))\n}\n\nexport function convertToPnpm(cwd: string, workspacePackageJsonPaths: string[]): number {\n console.log(chalk.blue('\\nConverting to pnpm...\\n'))\n\n // 1. Read workspace patterns and update root package.json\n const workspacePatterns = updateRootPackageJson(cwd)\n\n // 2. Create pnpm-workspace.yaml\n createPnpmWorkspaceYaml(cwd, workspacePatterns)\n\n // 3. Rewrite scripts in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (!existsSync(fullPath)) continue\n const pkg = JSON.parse(readFileSync(fullPath, 'utf8'))\n const updated = rewriteScriptsInPackageJson(pkg, 'yarn-to-pnpm')\n if (JSON.stringify(pkg) !== JSON.stringify(updated)) {\n writeFileSync(fullPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n }\n }\n console.log(chalk.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`))\n\n // 4. Update .gitignore\n updateGitignore(cwd)\n\n // 5. Create .npmrc\n createNpmrc(cwd)\n\n // 6. Delete yarn artifacts\n deleteYarnArtifacts(cwd)\n\n console.log(chalk.blue('\\nConversion complete. Run `pnpm install` to generate pnpm-lock.yaml.\\n'))\n return 0\n}\n","type Direction = 'pnpm-to-yarn' | 'yarn-to-pnpm'\n\nfunction rewriteYarnToPnpm(script: string): string {\n let result = script\n // yarn workspace @pkg run script → pnpm --filter @pkg run script\n result = result.replaceAll(/\\byarn workspace (\\S+) run /g, 'pnpm --filter $1 run ')\n // yarn workspace @pkg package-X → pnpm --filter @pkg run package-X\n result = result.replaceAll(/\\byarn workspace (\\S+) (package-\\S+)/g, 'pnpm --filter $1 run $2')\n // yarn workspaces foreach [flags] run script → pnpm -r run script\n result = result.replaceAll(/\\byarn workspaces foreach\\s+(?:[^\\s]*\\s+)*run /g, 'pnpm -r run ')\n // yarn workspaces foreach --all version X --deferred → pnpm -r exec npm version X --no-git-tag-version\n result = result.replaceAll(/\\byarn workspaces foreach --all version (\\S+) --deferred/g, 'pnpm -r exec npm version $1 --no-git-tag-version')\n // yarn version apply --all → (remove, handled in bump)\n result = result.replaceAll(/\\byarn version apply --all/g, 'echo \"versions applied\"')\n // yarn xy → pnpm xy\n result = result.replaceAll(/\\byarn xy\\b/g, 'pnpm xy')\n // yarn add/remove/install/dedupe/outdated → pnpm equivalents\n result = result.replaceAll(/\\byarn add\\b/g, 'pnpm add')\n result = result.replaceAll(/\\byarn remove\\b/g, 'pnpm remove')\n result = result.replaceAll(/\\byarn install\\b/g, 'pnpm install')\n result = result.replaceAll(/\\byarn dedupe\\b/g, 'pnpm dedupe')\n result = result.replaceAll(/\\byarn outdated\\b/g, 'pnpm outdated')\n result = result.replaceAll(/\\byarn run\\b/g, 'pnpm run')\n // yarn rimraf → rimraf (no PM prefix)\n result = result.replaceAll(/\\byarn rimraf\\b/g, 'rimraf')\n // yarn npm → npm (direct)\n result = result.replaceAll(/\\byarn npm\\b/g, 'npm')\n // Remaining bare \"yarn\" at word boundary (but not in URLs or package names)\n result = result.replaceAll(/\\byarn\\b(?![@/.])/g, 'pnpm')\n return result\n}\n\nfunction rewritePnpmToYarn(script: string): string {\n let result = script\n // pnpm --filter @pkg run script → yarn workspace @pkg run script\n result = result.replaceAll(/\\bpnpm --filter (\\S+) run /g, 'yarn workspace $1 run ')\n // pnpm -r run script → yarn workspaces foreach -Apt run script\n result = result.replaceAll(/\\bpnpm -r run /g, 'yarn workspaces foreach -Apt run ')\n // pnpm -r exec npm version X → yarn workspaces foreach --all version X --deferred\n result = result.replaceAll(/\\bpnpm -r exec npm version (\\S+) --no-git-tag-version/g, 'yarn workspaces foreach --all version $1 --deferred')\n // pnpm xy → yarn xy\n result = result.replaceAll(/\\bpnpm xy\\b/g, 'yarn xy')\n // pnpm add/remove/install/dedupe/outdated → yarn equivalents\n result = result.replaceAll(/\\bpnpm add\\b/g, 'yarn add')\n result = result.replaceAll(/\\bpnpm remove\\b/g, 'yarn remove')\n result = result.replaceAll(/\\bpnpm install\\b/g, 'yarn install')\n result = result.replaceAll(/\\bpnpm dedupe\\b/g, 'yarn dedupe')\n result = result.replaceAll(/\\bpnpm outdated\\b/g, 'yarn outdated')\n result = result.replaceAll(/\\bpnpm run\\b/g, 'yarn run')\n // Remaining bare \"pnpm\"\n result = result.replaceAll(/\\bpnpm\\b(?![@/.])/g, 'yarn')\n return result\n}\n\nexport function rewriteScript(script: string, direction: Direction): string {\n return direction === 'yarn-to-pnpm'\n ? rewriteYarnToPnpm(script)\n : rewritePnpmToYarn(script)\n}\n\nexport function rewriteScriptsInPackageJson(\n pkg: Record<string, unknown>,\n direction: Direction,\n): Record<string, unknown> {\n const scripts = pkg.scripts as Record<string, string> | undefined\n if (!scripts) return pkg\n\n const rewritten: Record<string, string> = {}\n for (const [name, script] of Object.entries(scripts)) {\n rewritten[name] = rewriteScript(script, direction)\n }\n return { ...pkg, scripts: rewritten }\n}\n","import {\n existsSync, readFileSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { rewriteScriptsInPackageJson } from './rewriteScripts.ts'\n\nconst YARN_VERSION = '4.13.0'\n\nconst YARNRC_TEMPLATE = `compressionLevel: mixed\n\nenableGlobalCache: true\n\nenableInlineBuilds: true\n\nnmHoistingLimits: none\n\nnodeLinker: node-modules\n`\n\nconst YARN_GITIGNORE_ENTRIES = `\n.pnp.*\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/sdks\n!.yarn/versions\n`\n\nfunction readPnpmWorkspacePatterns(cwd: string): string[] {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return []\n\n const content = readFileSync(wsPath, 'utf8')\n const patterns: string[] = []\n // Simple YAML parsing for packages list\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n return patterns\n}\n\nfunction updateRootPackageJson(cwd: string, workspacePatterns: string[]): void {\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))\n\n // Add workspaces field\n pkg.workspaces = workspacePatterns\n\n // Update packageManager\n pkg.packageManager = `yarn@${YARN_VERSION}`\n\n // Rewrite scripts\n const updated = rewriteScriptsInPackageJson(pkg, 'pnpm-to-yarn')\n\n writeFileSync(pkgPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n console.log(chalk.green(' Updated root package.json'))\n}\n\nfunction updateGitignore(cwd: string): void {\n const gitignorePath = PATH.join(cwd, '.gitignore')\n let content = existsSync(gitignorePath) ? readFileSync(gitignorePath, 'utf8') : ''\n\n // Add yarn entries if not already present\n if (!content.includes('.yarn/*')) {\n content = content.trimEnd() + '\\n' + YARN_GITIGNORE_ENTRIES\n }\n\n writeFileSync(gitignorePath, content, 'utf8')\n console.log(chalk.green(' Updated .gitignore'))\n}\n\nfunction deletePnpmArtifacts(cwd: string): void {\n const lockfile = PATH.join(cwd, 'pnpm-lock.yaml')\n const workspaceYaml = PATH.join(cwd, 'pnpm-workspace.yaml')\n const npmrc = PATH.join(cwd, '.npmrc')\n\n if (existsSync(lockfile)) {\n rmSync(lockfile)\n console.log(chalk.gray(' Deleted pnpm-lock.yaml'))\n }\n if (existsSync(workspaceYaml)) {\n rmSync(workspaceYaml)\n console.log(chalk.gray(' Deleted pnpm-workspace.yaml'))\n }\n if (existsSync(npmrc)) {\n const content = readFileSync(npmrc, 'utf8')\n // Only delete if it's empty or pnpm-specific\n if (content.trim() === '' || content.includes('shamefully-hoist') || content.includes('node-linker')) {\n rmSync(npmrc)\n console.log(chalk.gray(' Deleted .npmrc'))\n }\n }\n}\n\nfunction createYarnrc(cwd: string): void {\n const yarnrcPath = PATH.join(cwd, '.yarnrc.yml')\n if (existsSync(yarnrcPath)) return\n\n writeFileSync(yarnrcPath, YARNRC_TEMPLATE, 'utf8')\n console.log(chalk.green(' Created .yarnrc.yml'))\n}\n\nexport function convertToYarn(cwd: string, workspacePackageJsonPaths: string[]): number {\n console.log(chalk.blue('\\nConverting to yarn...\\n'))\n\n // 1. Read workspace patterns from pnpm-workspace.yaml\n const workspacePatterns = readPnpmWorkspacePatterns(cwd)\n if (workspacePatterns.length === 0) {\n console.warn(chalk.yellow(' No workspace patterns found in pnpm-workspace.yaml'))\n }\n\n // 2. Update root package.json\n updateRootPackageJson(cwd, workspacePatterns)\n\n // 3. Rewrite scripts in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (!existsSync(fullPath)) continue\n const pkg = JSON.parse(readFileSync(fullPath, 'utf8'))\n const updated = rewriteScriptsInPackageJson(pkg, 'pnpm-to-yarn')\n if (JSON.stringify(pkg) !== JSON.stringify(updated)) {\n writeFileSync(fullPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n }\n }\n console.log(chalk.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`))\n\n // 4. Update .gitignore\n updateGitignore(cwd)\n\n // 5. Create .yarnrc.yml\n createYarnrc(cwd)\n\n // 6. Delete pnpm artifacts\n deletePnpmArtifacts(cwd)\n\n console.log(chalk.blue('\\nConversion complete. Run `corepack enable yarn && yarn set version stable && yarn install` to finish setup.\\n'))\n return 0\n}\n"],"mappings":"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","names":["existsSync","readFileSync","PATH","chalk","existsSync","readFileSync","rmSync","writeFileSync","PATH","chalk","PATH","existsSync","readFileSync","updateRootPackageJson","writeFileSync","chalk","updateGitignore","rmSync","existsSync","PATH","readFileSync","subPath","chalk"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/packman/convert.ts","../../../src/actions/packman/convertToPnpm.ts","../../../src/actions/packman/rewriteScripts.ts","../../../src/actions/packman/swapTsScriptsDependency.ts","../../../src/actions/packman/convertToYarn.ts"],"sourcesContent":["import {\n existsSync, readdirSync, readFileSync, statSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { convertToPnpm } from './convertToPnpm.ts'\nimport { convertToYarn } from './convertToYarn.ts'\n\ntype TargetPM = 'pnpm' | 'yarn'\n\nexport interface ConvertParams {\n target: string\n verbose?: boolean\n}\n\nfunction detectCurrentPM(cwd: string): 'pnpm' | 'yarn' | 'unknown' {\n if (existsSync(PATH.join(cwd, 'pnpm-lock.yaml')) || existsSync(PATH.join(cwd, 'pnpm-workspace.yaml'))) {\n return 'pnpm'\n }\n if (existsSync(PATH.join(cwd, 'yarn.lock')) || existsSync(PATH.join(cwd, '.yarnrc.yml'))) {\n return 'yarn'\n }\n return 'unknown'\n}\n\nfunction findWorkspacePackagePaths(cwd: string): string[] {\n // Read workspace patterns from package.json or pnpm-workspace.yaml\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))\n\n let patterns: string[] = pkg.workspaces ?? []\n\n // Also try pnpm-workspace.yaml\n if (patterns.length === 0) {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (existsSync(wsPath)) {\n const content = readFileSync(wsPath, 'utf8')\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n }\n }\n\n // Resolve glob patterns to actual package directories\n const dirs: string[] = []\n for (const pattern of patterns) {\n const resolved = resolveWorkspaceGlob(cwd, pattern)\n dirs.push(...resolved)\n }\n return dirs\n}\n\nfunction resolveWorkspaceGlob(cwd: string, pattern: string): string[] {\n // Simple glob resolution for workspace patterns like \"packages/*\" or \"packages/**/*\"\n const parts = pattern.split('/')\n return walkGlob(cwd, parts, '')\n}\n\nfunction walkGlob(basePath: string, parts: string[], currentPath: string): string[] {\n if (parts.length === 0) {\n // Check if this path has a package.json\n const fullPath = PATH.join(basePath, currentPath)\n if (existsSync(PATH.join(fullPath, 'package.json'))) {\n return [currentPath]\n }\n return []\n }\n\n const [part, ...rest] = parts\n const dirPath = PATH.join(basePath, currentPath)\n\n if (!existsSync(dirPath) || !statSync(dirPath).isDirectory()) {\n return []\n }\n\n if (part === '*' || part === '**') {\n const entries = readdirSync(dirPath, { withFileTypes: true })\n .filter(e => e.isDirectory() && !e.name.startsWith('.') && e.name !== 'node_modules' && e.name !== 'dist')\n const results: string[] = []\n\n if (part === '**') {\n // ** can match zero segments — try skipping it\n results.push(...walkGlob(basePath, rest, currentPath))\n }\n\n for (const entry of entries) {\n const subPath = currentPath ? `${currentPath}/${entry.name}` : entry.name\n if (part === '**') {\n // ** matches any depth — try both continuing with rest and recursing deeper\n results.push(\n ...walkGlob(basePath, rest, subPath),\n ...walkGlob(basePath, parts, subPath),\n )\n } else {\n results.push(...walkGlob(basePath, rest, subPath))\n }\n }\n return results\n }\n\n const subPath = currentPath ? `${currentPath}/${part}` : part\n return walkGlob(basePath, rest, subPath)\n}\n\nexport function convert({ target, verbose }: ConvertParams): number {\n const validTargets: TargetPM[] = ['pnpm', 'yarn']\n if (!validTargets.includes(target as TargetPM)) {\n console.error(chalk.red(`Invalid target \"${target}\". Must be one of: ${validTargets.join(', ')}`))\n return 1\n }\n\n const cwd = process.cwd()\n const currentPM = detectCurrentPM(cwd)\n\n if (verbose) {\n console.log(chalk.gray(`Current package manager: ${currentPM}`))\n console.log(chalk.gray(`Target package manager: ${target}`))\n }\n\n if (currentPM === target) {\n console.log(chalk.yellow(`Already using ${target}. Re-applying conversion to fix any incomplete steps...`))\n }\n\n if (currentPM === 'unknown') {\n console.error(chalk.red('Could not detect current package manager. No yarn.lock or pnpm-lock.yaml found.'))\n return 1\n }\n\n // Find all workspace package paths\n const workspacePaths = findWorkspacePackagePaths(cwd)\n if (verbose) {\n console.log(chalk.gray(`Found ${workspacePaths.length} workspace packages`))\n }\n\n if (target === 'pnpm') {\n return convertToPnpm(cwd, workspacePaths)\n }\n return convertToYarn(cwd, workspacePaths)\n}\n","import {\n existsSync, mkdirSync, readFileSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { rewriteScriptsInPackageJson } from './rewriteScripts.ts'\nimport { swapTsScriptsDependency } from './swapTsScriptsDependency.ts'\n\nconst PNPM_VERSION = '10.12.1'\n\nfunction createPnpmWorkspaceYaml(cwd: string, workspacePatterns: string[]): void {\n const lines = ['packages:']\n for (const pattern of workspacePatterns) {\n lines.push(` - '${pattern}'`)\n }\n writeFileSync(PATH.join(cwd, 'pnpm-workspace.yaml'), lines.join('\\n') + '\\n', 'utf8')\n console.log(chalk.green(' Created pnpm-workspace.yaml'))\n}\n\nfunction readPnpmWorkspacePatterns(cwd: string): string[] {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return []\n\n const content = readFileSync(wsPath, 'utf8')\n const patterns: string[] = []\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n return patterns\n}\n\nfunction updateRootPackageJson(cwd: string): string[] {\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))\n\n // Save workspace patterns before removing — fall back to pnpm-workspace.yaml if already converted\n const workspacePatterns: string[] = pkg.workspaces ?? readPnpmWorkspacePatterns(cwd)\n\n // Remove yarn workspaces field (pnpm uses pnpm-workspace.yaml)\n delete pkg.workspaces\n\n // Update packageManager\n pkg.packageManager = `pnpm@${PNPM_VERSION}`\n\n // Rewrite scripts\n const updated = rewriteScriptsInPackageJson(pkg, 'yarn-to-pnpm')\n\n writeFileSync(pkgPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n console.log(chalk.green(' Updated root package.json'))\n\n return workspacePatterns\n}\n\nfunction updateGitignore(cwd: string): void {\n const gitignorePath = PATH.join(cwd, '.gitignore')\n if (!existsSync(gitignorePath)) return\n\n let content = readFileSync(gitignorePath, 'utf8')\n\n // Remove yarn-specific entries\n const yarnLines = [\n '.pnp.*',\n '.pnp',\n '.yarn/*',\n '!.yarn/patches',\n '!.yarn/plugins',\n '!.yarn/releases',\n '!.yarn/sdks',\n '!.yarn/versions',\n ]\n for (const line of yarnLines) {\n content = content.replaceAll(new RegExp(String.raw`^${line.replaceAll('.', String.raw`\\.`).replaceAll('*', String.raw`\\*`).replaceAll('!', String.raw`\\!`)}\\s*$`, 'gm'), '')\n }\n\n // Clean up multiple blank lines\n content = content.replaceAll(/\\n{3,}/g, '\\n\\n')\n\n writeFileSync(gitignorePath, content, 'utf8')\n console.log(chalk.green(' Updated .gitignore'))\n}\n\nfunction deleteYarnArtifacts(cwd: string): void {\n const yarnLock = PATH.join(cwd, 'yarn.lock')\n const yarnrc = PATH.join(cwd, '.yarnrc.yml')\n const yarnDir = PATH.join(cwd, '.yarn')\n\n if (existsSync(yarnLock)) {\n rmSync(yarnLock)\n console.log(chalk.gray(' Deleted yarn.lock'))\n }\n if (existsSync(yarnrc)) {\n rmSync(yarnrc)\n console.log(chalk.gray(' Deleted .yarnrc.yml'))\n }\n if (existsSync(yarnDir)) {\n rmSync(yarnDir, { force: true, recursive: true })\n console.log(chalk.gray(' Deleted .yarn/'))\n }\n}\n\nfunction createNpmrc(cwd: string): void {\n const npmrcPath = PATH.join(cwd, '.npmrc')\n if (existsSync(npmrcPath)) return\n\n mkdirSync(PATH.dirname(npmrcPath), { recursive: true })\n writeFileSync(npmrcPath, '', 'utf8')\n console.log(chalk.green(' Created .npmrc'))\n}\n\nexport function convertToPnpm(cwd: string, workspacePackageJsonPaths: string[]): number {\n console.log(chalk.blue('\\nConverting to pnpm...\\n'))\n\n // 1. Read workspace patterns and update root package.json\n const workspacePatterns = updateRootPackageJson(cwd)\n\n // 2. Create pnpm-workspace.yaml\n createPnpmWorkspaceYaml(cwd, workspacePatterns)\n\n // 3. Rewrite scripts in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (!existsSync(fullPath)) continue\n const pkg = JSON.parse(readFileSync(fullPath, 'utf8'))\n const updated = rewriteScriptsInPackageJson(pkg, 'yarn-to-pnpm')\n if (JSON.stringify(pkg) !== JSON.stringify(updated)) {\n writeFileSync(fullPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n }\n }\n console.log(chalk.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`))\n\n // 4. Update .gitignore\n updateGitignore(cwd)\n\n // 5. Create .npmrc\n createNpmrc(cwd)\n\n // 6. Swap ts-scripts devDependency (yarn3 → pnpm) in root and workspace packages\n swapTsScriptsDependency(cwd, workspacePackageJsonPaths, 'yarn-to-pnpm')\n\n // 7. Delete yarn artifacts\n deleteYarnArtifacts(cwd)\n\n console.log(chalk.blue('\\nConversion complete. Run `pnpm install` to generate pnpm-lock.yaml.\\n'))\n return 0\n}\n","type Direction = 'pnpm-to-yarn' | 'yarn-to-pnpm'\n\nfunction rewriteYarnToPnpm(script: string): string {\n let result = script\n // yarn workspace @pkg run script → pnpm --filter @pkg run script\n result = result.replaceAll(/\\byarn workspace (\\S+) run /g, 'pnpm --filter $1 run ')\n // yarn workspace @pkg package-X → pnpm --filter @pkg run package-X\n result = result.replaceAll(/\\byarn workspace (\\S+) (package-\\S+)/g, 'pnpm --filter $1 run $2')\n // yarn workspaces foreach [flags] run script → pnpm -r run script\n result = result.replaceAll(/\\byarn workspaces foreach\\s+(?:[^\\s]*\\s+)*run /g, 'pnpm -r run ')\n // yarn workspaces foreach --all version X --deferred → pnpm -r exec npm version X --no-git-tag-version\n result = result.replaceAll(/\\byarn workspaces foreach --all version (\\S+) --deferred/g, 'pnpm -r exec npm version $1 --no-git-tag-version')\n // yarn version apply --all → (remove, handled in bump)\n result = result.replaceAll(/\\byarn version apply --all/g, 'echo \"versions applied\"')\n // yarn xy → pnpm xy\n result = result.replaceAll(/\\byarn xy\\b/g, 'pnpm xy')\n // yarn add/remove/install/dedupe/outdated → pnpm equivalents\n result = result.replaceAll(/\\byarn add\\b/g, 'pnpm add')\n result = result.replaceAll(/\\byarn remove\\b/g, 'pnpm remove')\n result = result.replaceAll(/\\byarn install\\b/g, 'pnpm install')\n result = result.replaceAll(/\\byarn dedupe\\b/g, 'pnpm dedupe')\n result = result.replaceAll(/\\byarn outdated\\b/g, 'pnpm outdated')\n result = result.replaceAll(/\\byarn run\\b/g, 'pnpm run')\n // yarn rimraf → rimraf (no PM prefix)\n result = result.replaceAll(/\\byarn rimraf\\b/g, 'rimraf')\n // yarn npm → npm (direct)\n result = result.replaceAll(/\\byarn npm\\b/g, 'npm')\n // Remaining bare \"yarn\" at word boundary (but not in URLs or package names)\n result = result.replaceAll(/\\byarn\\b(?![@/.])/g, 'pnpm')\n return result\n}\n\nfunction rewritePnpmToYarn(script: string): string {\n let result = script\n // pnpm --filter @pkg run script → yarn workspace @pkg run script\n result = result.replaceAll(/\\bpnpm --filter (\\S+) run /g, 'yarn workspace $1 run ')\n // pnpm -r run script → yarn workspaces foreach -Apt run script\n result = result.replaceAll(/\\bpnpm -r run /g, 'yarn workspaces foreach -Apt run ')\n // pnpm -r exec npm version X → yarn workspaces foreach --all version X --deferred\n result = result.replaceAll(/\\bpnpm -r exec npm version (\\S+) --no-git-tag-version/g, 'yarn workspaces foreach --all version $1 --deferred')\n // pnpm xy → yarn xy\n result = result.replaceAll(/\\bpnpm xy\\b/g, 'yarn xy')\n // pnpm add/remove/install/dedupe/outdated → yarn equivalents\n result = result.replaceAll(/\\bpnpm add\\b/g, 'yarn add')\n result = result.replaceAll(/\\bpnpm remove\\b/g, 'yarn remove')\n result = result.replaceAll(/\\bpnpm install\\b/g, 'yarn install')\n result = result.replaceAll(/\\bpnpm dedupe\\b/g, 'yarn dedupe')\n result = result.replaceAll(/\\bpnpm outdated\\b/g, 'yarn outdated')\n result = result.replaceAll(/\\bpnpm run\\b/g, 'yarn run')\n // Remaining bare \"pnpm\"\n result = result.replaceAll(/\\bpnpm\\b(?![@/.])/g, 'yarn')\n return result\n}\n\nexport function rewriteScript(script: string, direction: Direction): string {\n return direction === 'yarn-to-pnpm'\n ? rewriteYarnToPnpm(script)\n : rewritePnpmToYarn(script)\n}\n\nexport function rewriteScriptsInPackageJson(\n pkg: Record<string, unknown>,\n direction: Direction,\n): Record<string, unknown> {\n const scripts = pkg.scripts as Record<string, string> | undefined\n if (!scripts) return pkg\n\n const rewritten: Record<string, string> = {}\n for (const [name, script] of Object.entries(scripts)) {\n rewritten[name] = rewriteScript(script, direction)\n }\n return { ...pkg, scripts: rewritten }\n}\n","import {\n existsSync, readFileSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\ntype Direction = 'pnpm-to-yarn' | 'yarn-to-pnpm'\n\nconst SWAP_MAP: Record<Direction, [from: string, to: string][]> = {\n 'yarn-to-pnpm': [\n ['@xylabs/ts-scripts-yarn3', '@xylabs/ts-scripts-pnpm'],\n ],\n 'pnpm-to-yarn': [\n ['@xylabs/ts-scripts-pnpm', '@xylabs/ts-scripts-yarn3'],\n ],\n}\n\nfunction swapInPackageJson(pkgPath: string, direction: Direction): boolean {\n if (!existsSync(pkgPath)) return false\n\n const raw = readFileSync(pkgPath, 'utf8')\n const pkg = JSON.parse(raw)\n let changed = false\n\n for (const depField of ['dependencies', 'devDependencies']) {\n const deps = pkg[depField] as Record<string, string> | undefined\n if (!deps) continue\n\n for (const [from, to] of SWAP_MAP[direction]) {\n if (deps[from]) {\n deps[to] = deps[from]\n delete deps[from]\n changed = true\n }\n }\n }\n\n if (changed) {\n writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\\n', 'utf8')\n }\n return changed\n}\n\nexport function swapTsScriptsDependency(cwd: string, workspacePackageJsonPaths: string[], direction: Direction): void {\n let count = 0\n\n // Swap in root package.json\n if (swapInPackageJson(PATH.join(cwd, 'package.json'), direction)) {\n count++\n }\n\n // Swap in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (swapInPackageJson(fullPath, direction)) {\n count++\n }\n }\n\n if (count > 0) {\n const target = direction === 'yarn-to-pnpm' ? '@xylabs/ts-scripts-pnpm' : '@xylabs/ts-scripts-yarn3'\n console.log(chalk.green(` Swapped ts-scripts dependency to ${target} in ${count} package(s)`))\n }\n}\n","import {\n existsSync, readFileSync, rmSync, writeFileSync,\n} from 'node:fs'\nimport PATH from 'node:path'\n\nimport chalk from 'chalk'\n\nimport { rewriteScriptsInPackageJson } from './rewriteScripts.ts'\nimport { swapTsScriptsDependency } from './swapTsScriptsDependency.ts'\n\nconst YARN_VERSION = '4.13.0'\n\nconst YARNRC_TEMPLATE = `compressionLevel: mixed\n\nenableGlobalCache: true\n\nenableInlineBuilds: true\n\nnmHoistingLimits: none\n\nnodeLinker: node-modules\n`\n\nconst YARN_GITIGNORE_ENTRIES = `\n.pnp.*\n.yarn/*\n!.yarn/patches\n!.yarn/plugins\n!.yarn/releases\n!.yarn/sdks\n!.yarn/versions\n`\n\nfunction readPnpmWorkspacePatterns(cwd: string): string[] {\n const wsPath = PATH.join(cwd, 'pnpm-workspace.yaml')\n if (!existsSync(wsPath)) return []\n\n const content = readFileSync(wsPath, 'utf8')\n const patterns: string[] = []\n // Simple YAML parsing for packages list\n const lines = content.split('\\n')\n let inPackages = false\n for (const line of lines) {\n if (line.trim() === 'packages:') {\n inPackages = true\n continue\n }\n if (inPackages && /^\\s+-\\s+/.test(line)) {\n const pattern = line.replace(/^\\s+-\\s+/, '').replaceAll(/['\"]/g, '').trim()\n if (pattern) patterns.push(pattern)\n } else if (inPackages && !/^\\s/.test(line) && line.trim()) {\n inPackages = false\n }\n }\n return patterns\n}\n\nfunction updateRootPackageJson(cwd: string, workspacePatterns: string[]): void {\n const pkgPath = PATH.join(cwd, 'package.json')\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))\n\n // Add workspaces field\n pkg.workspaces = workspacePatterns\n\n // Update packageManager\n pkg.packageManager = `yarn@${YARN_VERSION}`\n\n // Rewrite scripts\n const updated = rewriteScriptsInPackageJson(pkg, 'pnpm-to-yarn')\n\n writeFileSync(pkgPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n console.log(chalk.green(' Updated root package.json'))\n}\n\nfunction updateGitignore(cwd: string): void {\n const gitignorePath = PATH.join(cwd, '.gitignore')\n let content = existsSync(gitignorePath) ? readFileSync(gitignorePath, 'utf8') : ''\n\n // Add yarn entries if not already present\n if (!content.includes('.yarn/*')) {\n content = content.trimEnd() + '\\n' + YARN_GITIGNORE_ENTRIES\n }\n\n writeFileSync(gitignorePath, content, 'utf8')\n console.log(chalk.green(' Updated .gitignore'))\n}\n\nfunction deletePnpmArtifacts(cwd: string): void {\n const lockfile = PATH.join(cwd, 'pnpm-lock.yaml')\n const workspaceYaml = PATH.join(cwd, 'pnpm-workspace.yaml')\n const npmrc = PATH.join(cwd, '.npmrc')\n\n if (existsSync(lockfile)) {\n rmSync(lockfile)\n console.log(chalk.gray(' Deleted pnpm-lock.yaml'))\n }\n if (existsSync(workspaceYaml)) {\n rmSync(workspaceYaml)\n console.log(chalk.gray(' Deleted pnpm-workspace.yaml'))\n }\n if (existsSync(npmrc)) {\n const content = readFileSync(npmrc, 'utf8')\n // Only delete if it's empty or pnpm-specific\n if (content.trim() === '' || content.includes('shamefully-hoist') || content.includes('node-linker')) {\n rmSync(npmrc)\n console.log(chalk.gray(' Deleted .npmrc'))\n }\n }\n}\n\nfunction createYarnrc(cwd: string): void {\n const yarnrcPath = PATH.join(cwd, '.yarnrc.yml')\n if (existsSync(yarnrcPath)) return\n\n writeFileSync(yarnrcPath, YARNRC_TEMPLATE, 'utf8')\n console.log(chalk.green(' Created .yarnrc.yml'))\n}\n\nfunction readWorkspacePatternsFromPackageJson(cwd: string): string[] {\n const pkgPath = PATH.join(cwd, 'package.json')\n if (!existsSync(pkgPath)) return []\n const pkg = JSON.parse(readFileSync(pkgPath, 'utf8'))\n return pkg.workspaces ?? []\n}\n\nexport function convertToYarn(cwd: string, workspacePackageJsonPaths: string[]): number {\n console.log(chalk.blue('\\nConverting to yarn...\\n'))\n\n // 1. Read workspace patterns — try pnpm-workspace.yaml first, fall back to pkg.workspaces if already converted\n const workspacePatterns = readPnpmWorkspacePatterns(cwd)\n if (workspacePatterns.length === 0) {\n const fromPkg = readWorkspacePatternsFromPackageJson(cwd)\n if (fromPkg.length > 0) {\n workspacePatterns.push(...fromPkg)\n } else {\n console.warn(chalk.yellow(' No workspace patterns found'))\n }\n }\n\n // 2. Update root package.json\n updateRootPackageJson(cwd, workspacePatterns)\n\n // 3. Rewrite scripts in workspace package.json files\n for (const pkgPath of workspacePackageJsonPaths) {\n const fullPath = PATH.resolve(cwd, pkgPath, 'package.json')\n if (!existsSync(fullPath)) continue\n const pkg = JSON.parse(readFileSync(fullPath, 'utf8'))\n const updated = rewriteScriptsInPackageJson(pkg, 'pnpm-to-yarn')\n if (JSON.stringify(pkg) !== JSON.stringify(updated)) {\n writeFileSync(fullPath, JSON.stringify(updated, null, 2) + '\\n', 'utf8')\n }\n }\n console.log(chalk.green(` Rewrote scripts in ${workspacePackageJsonPaths.length} workspace package(s)`))\n\n // 4. Update .gitignore\n updateGitignore(cwd)\n\n // 5. Create .yarnrc.yml\n createYarnrc(cwd)\n\n // 6. Swap ts-scripts devDependency (pnpm → yarn3) in root and workspace packages\n swapTsScriptsDependency(cwd, workspacePackageJsonPaths, 'pnpm-to-yarn')\n\n // 7. Delete pnpm artifacts\n deletePnpmArtifacts(cwd)\n\n console.log(chalk.blue('\\nConversion complete. Run `corepack enable yarn && yarn set version stable && yarn install` to finish setup.\\n'))\n return 0\n}\n"],"mappings":"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","names":["existsSync","readFileSync","PATH","chalk","existsSync","readFileSync","writeFileSync","PATH","chalk","writeFileSync","PATH","chalk","existsSync","readFileSync","existsSync","readFileSync","rmSync","writeFileSync","PATH","chalk","readPnpmWorkspacePatterns","PATH","existsSync","readFileSync","updateRootPackageJson","writeFileSync","chalk","updateGitignore","rmSync","existsSync","PATH","readFileSync","subPath","chalk"]}
|