@next/codemod 15.0.0-canary.195 → 15.0.0-canary.197
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/bin/upgrade.js +81 -8
- package/package.json +3 -2
package/bin/upgrade.js
CHANGED
|
@@ -1,9 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
5
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
29
|
exports.runUpgrade = runUpgrade;
|
|
30
|
+
const os = __importStar(require("os"));
|
|
7
31
|
const prompts_1 = __importDefault(require("prompts"));
|
|
8
32
|
const fs_1 = __importDefault(require("fs"));
|
|
9
33
|
const semver_1 = __importDefault(require("semver"));
|
|
@@ -15,6 +39,22 @@ const handle_package_1 = require("../lib/handle-package");
|
|
|
15
39
|
const transform_1 = require("./transform");
|
|
16
40
|
const utils_1 = require("../lib/utils");
|
|
17
41
|
const shared_1 = require("./shared");
|
|
42
|
+
const optionalNextjsPackages = [
|
|
43
|
+
'create-next-app',
|
|
44
|
+
'eslint-config-next',
|
|
45
|
+
'@next/bundle-analyzer',
|
|
46
|
+
'@next/codemod',
|
|
47
|
+
'@next/env',
|
|
48
|
+
'@next/eslint-plugin-next',
|
|
49
|
+
'@next/font',
|
|
50
|
+
'@next/mdx',
|
|
51
|
+
'@next/plugin-storybook',
|
|
52
|
+
'@next/polyfill-module',
|
|
53
|
+
'@next/polyfill-nomodule',
|
|
54
|
+
'@next/swc',
|
|
55
|
+
'@next/react-refresh-utils',
|
|
56
|
+
'@next/third-parties',
|
|
57
|
+
];
|
|
18
58
|
/**
|
|
19
59
|
* @param query
|
|
20
60
|
* @example loadHighestNPMVersionMatching("react@^18.3.0 || ^19.0.0") === Promise<"19.0.0">
|
|
@@ -79,7 +119,7 @@ async function runUpgrade(revision, options) {
|
|
|
79
119
|
// we should only let the user stay on React 18 if they are using pure Pages Router.
|
|
80
120
|
// x-ref(PR): https://github.com/vercel/next.js/pull/65058
|
|
81
121
|
// x-ref(release): https://github.com/vercel/next.js/releases/tag/v14.3.0-canary.45
|
|
82
|
-
(0, compare_1.default)(
|
|
122
|
+
(0, compare_1.default)(targetNextVersion, '14.3.0-canary.45') >= 0 &&
|
|
83
123
|
installedReactVersion.startsWith('18')) {
|
|
84
124
|
const shouldStayOnReact18Res = await (0, prompts_1.default)({
|
|
85
125
|
type: 'confirm',
|
|
@@ -109,7 +149,8 @@ async function runUpgrade(revision, options) {
|
|
|
109
149
|
let execCommand = 'npx';
|
|
110
150
|
// The following React codemods are for React 19
|
|
111
151
|
if (!shouldStayOnReact18 &&
|
|
112
|
-
(0, compare_1.default)(targetReactVersion, '
|
|
152
|
+
(0, compare_1.default)(targetReactVersion, '18.9999.9999') > 0 &&
|
|
153
|
+
(0, compare_1.default)(installedReactVersion, '18.9999.9999') <= 0) {
|
|
113
154
|
shouldRunReactCodemods = await suggestReactCodemods();
|
|
114
155
|
shouldRunReactTypesCodemods = await suggestReactTypesCodemods();
|
|
115
156
|
const execCommandMap = {
|
|
@@ -133,6 +174,12 @@ async function runUpgrade(revision, options) {
|
|
|
133
174
|
'react-dom': { version: targetReactVersion, required: true },
|
|
134
175
|
'react-is': { version: targetReactVersion, required: false },
|
|
135
176
|
};
|
|
177
|
+
for (const optionalNextjsPackage of optionalNextjsPackages) {
|
|
178
|
+
versionMapping[optionalNextjsPackage] = {
|
|
179
|
+
version: targetNextVersion,
|
|
180
|
+
required: false,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
136
183
|
if (targetReactVersion.startsWith('19.0.0-canary') ||
|
|
137
184
|
targetReactVersion.startsWith('19.0.0-beta') ||
|
|
138
185
|
targetReactVersion.startsWith('19.0.0-rc')) {
|
|
@@ -196,7 +243,9 @@ async function runUpgrade(revision, options) {
|
|
|
196
243
|
for (const [dep, version] of devDependenciesToInstall) {
|
|
197
244
|
(0, handle_package_1.addPackageDependency)(appPackageJson, dep, version, true);
|
|
198
245
|
}
|
|
199
|
-
fs_1.default.writeFileSync(appPackageJsonPath, JSON.stringify(appPackageJson, null, 2)
|
|
246
|
+
fs_1.default.writeFileSync(appPackageJsonPath, JSON.stringify(appPackageJson, null, 2) +
|
|
247
|
+
// Common IDE formatters would add a newline as well.
|
|
248
|
+
os.EOL);
|
|
200
249
|
(0, handle_package_1.runInstallation)(packageManager);
|
|
201
250
|
for (const codemod of codemods) {
|
|
202
251
|
await (0, transform_1.runTransform)(codemod, process.cwd(), { force: true, verbose });
|
|
@@ -351,18 +400,24 @@ async function suggestReactTypesCodemods() {
|
|
|
351
400
|
return runReactTypesCodemod;
|
|
352
401
|
}
|
|
353
402
|
function writeOverridesField(packageJson, packageManager, overrides) {
|
|
354
|
-
|
|
403
|
+
const entries = Object.entries(overrides);
|
|
404
|
+
// Avoids writing an empty overrides field into package.json
|
|
405
|
+
// which would be an unnecessary diff.
|
|
406
|
+
if (entries.length === 0) {
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
if (packageManager === 'npm') {
|
|
355
410
|
if (!packageJson.overrides) {
|
|
356
411
|
packageJson.overrides = {};
|
|
357
412
|
}
|
|
358
|
-
for (const [key, value] of
|
|
413
|
+
for (const [key, value] of entries) {
|
|
359
414
|
packageJson.overrides[key] = value;
|
|
360
415
|
}
|
|
361
416
|
}
|
|
362
417
|
else if (packageManager === 'pnpm') {
|
|
363
418
|
// pnpm supports pnpm.overrides and pnpm.resolutions
|
|
364
419
|
if (packageJson.resolutions) {
|
|
365
|
-
for (const [key, value] of
|
|
420
|
+
for (const [key, value] of entries) {
|
|
366
421
|
packageJson.resolutions[key] = value;
|
|
367
422
|
}
|
|
368
423
|
}
|
|
@@ -373,7 +428,7 @@ function writeOverridesField(packageJson, packageManager, overrides) {
|
|
|
373
428
|
if (!packageJson.pnpm.overrides) {
|
|
374
429
|
packageJson.pnpm.overrides = {};
|
|
375
430
|
}
|
|
376
|
-
for (const [key, value] of
|
|
431
|
+
for (const [key, value] of entries) {
|
|
377
432
|
packageJson.pnpm.overrides[key] = value;
|
|
378
433
|
}
|
|
379
434
|
}
|
|
@@ -382,9 +437,27 @@ function writeOverridesField(packageJson, packageManager, overrides) {
|
|
|
382
437
|
if (!packageJson.resolutions) {
|
|
383
438
|
packageJson.resolutions = {};
|
|
384
439
|
}
|
|
385
|
-
for (const [key, value] of
|
|
440
|
+
for (const [key, value] of entries) {
|
|
386
441
|
packageJson.resolutions[key] = value;
|
|
387
442
|
}
|
|
388
443
|
}
|
|
444
|
+
else if (packageManager === 'bun') {
|
|
445
|
+
// bun supports both overrides and resolutions
|
|
446
|
+
// x-ref: https://bun.sh/docs/install/overrides
|
|
447
|
+
if (packageJson.resolutions) {
|
|
448
|
+
for (const [key, value] of entries) {
|
|
449
|
+
packageJson.resolutions[key] = value;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
else {
|
|
453
|
+
// add overrides field if it's missing and add overrides
|
|
454
|
+
if (!packageJson.overrides) {
|
|
455
|
+
packageJson.overrides = {};
|
|
456
|
+
}
|
|
457
|
+
for (const [key, value] of entries) {
|
|
458
|
+
packageJson.overrides[key] = value;
|
|
459
|
+
}
|
|
460
|
+
}
|
|
461
|
+
}
|
|
389
462
|
}
|
|
390
463
|
//# sourceMappingURL=upgrade.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next/codemod",
|
|
3
|
-
"version": "15.0.0-canary.
|
|
3
|
+
"version": "15.0.0-canary.197",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -30,7 +30,8 @@
|
|
|
30
30
|
"build": "pnpm tsc -d -p tsconfig.json",
|
|
31
31
|
"prepublishOnly": "cd ../../ && turbo run build",
|
|
32
32
|
"dev": "pnpm tsc -d -w -p tsconfig.json",
|
|
33
|
-
"test": "jest"
|
|
33
|
+
"test": "jest",
|
|
34
|
+
"test:upgrade-fixture": "./scripts/test-upgrade-fixture.sh"
|
|
34
35
|
},
|
|
35
36
|
"bin": "./bin/next-codemod.js",
|
|
36
37
|
"devDependencies": {
|