@next/codemod 15.0.0-canary.191 → 15.0.0-canary.192

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.
Files changed (2) hide show
  1. package/bin/upgrade.js +29 -23
  2. package/package.json +1 -1
package/bin/upgrade.js CHANGED
@@ -37,17 +37,6 @@ function endMessage() {
37
37
  console.log(picocolors_1.default.white(picocolors_1.default.bold(`Please review the local changes and read the Next.js 15 migration guide to complete the migration.`)));
38
38
  console.log(picocolors_1.default.underline('https://nextjs.org/docs/canary/app/building-your-application/upgrading/version-15'));
39
39
  }
40
- function addDependencyIfNeeded(packageName, version, appPackageJson, dependenciesToInstall, devDependenciesToInstall) {
41
- const specifiedDependency = `${packageName}@${version}`;
42
- // First check if it's dev dependencies, then add into dev deps;
43
- // If it's not, fallback into dependencies.
44
- if (appPackageJson.devDependencies?.[packageName]) {
45
- devDependenciesToInstall.push(specifiedDependency);
46
- }
47
- else if (appPackageJson.dependencies?.[packageName]) {
48
- dependenciesToInstall.push(specifiedDependency);
49
- }
50
- }
51
40
  async function runUpgrade(revision, options) {
52
41
  const { verbose } = options;
53
42
  const appPackageJsonPath = path_1.default.resolve(process.cwd(), 'package.json');
@@ -134,28 +123,45 @@ async function runUpgrade(revision, options) {
134
123
  fs_1.default.writeFileSync(appPackageJsonPath, JSON.stringify(appPackageJson, null, 2));
135
124
  const dependenciesToInstall = [];
136
125
  const devDependenciesToInstall = [];
137
- const corePackageNameVersionMapping = {
138
- react: targetReactVersion,
139
- 'react-dom': targetReactVersion,
140
- next: targetNextVersion,
126
+ const versionMapping = {
127
+ next: { version: targetNextVersion, required: true },
128
+ react: { version: targetReactVersion, required: true },
129
+ 'react-dom': { version: targetReactVersion, required: true },
130
+ 'react-is': { version: targetReactVersion, required: false },
141
131
  };
142
- for (const packageName of Object.keys(corePackageNameVersionMapping)) {
143
- addDependencyIfNeeded(packageName, corePackageNameVersionMapping[packageName], appPackageJson, dependenciesToInstall, devDependenciesToInstall);
144
- }
145
132
  if (targetReactVersion.startsWith('19.0.0-canary') ||
146
133
  targetReactVersion.startsWith('19.0.0-beta') ||
147
134
  targetReactVersion.startsWith('19.0.0-rc')) {
148
- corePackageNameVersionMapping['@types/react'] = 'npm:types-react@rc';
149
- corePackageNameVersionMapping['@types/react-dom'] = 'npm:types-react-dom@rc';
135
+ versionMapping['@types/react'] = {
136
+ version: `npm:types-react@rc`,
137
+ required: false,
138
+ };
139
+ versionMapping['@types/react-dom'] = {
140
+ version: `npm:types-react-dom@rc`,
141
+ required: false,
142
+ };
150
143
  }
151
144
  else {
152
145
  const [targetReactTypesVersion, targetReactDOMTypesVersion] = await Promise.all([
153
146
  loadHighestNPMVersionMatching(`@types/react@${targetNextPackageJson.peerDependencies['react']}`),
154
147
  loadHighestNPMVersionMatching(`@types/react-dom@${targetNextPackageJson.peerDependencies['react']}`),
155
148
  ]);
156
- corePackageNameVersionMapping['@types/react'] = targetReactTypesVersion;
157
- corePackageNameVersionMapping['@types/react-dom'] =
158
- targetReactDOMTypesVersion;
149
+ versionMapping['@types/react'] = {
150
+ version: targetReactTypesVersion,
151
+ required: false,
152
+ };
153
+ versionMapping['@types/react-dom'] = {
154
+ version: targetReactDOMTypesVersion,
155
+ required: false,
156
+ };
157
+ }
158
+ for (const [packageName, { version, required }] of Object.entries(versionMapping)) {
159
+ if (appPackageJson.devDependencies?.[packageName]) {
160
+ devDependenciesToInstall.push(`${packageName}@${version}`);
161
+ }
162
+ else if (required || appPackageJson.dependencies?.[packageName]) {
163
+ dependenciesToInstall.push(`${packageName}@${version}`);
164
+ }
159
165
  }
160
166
  console.log(`Upgrading your project to ${picocolors_1.default.blue('Next.js ' + targetNextVersion)}...\n`);
161
167
  (0, handle_package_1.installPackages)(dependenciesToInstall, {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next/codemod",
3
- "version": "15.0.0-canary.191",
3
+ "version": "15.0.0-canary.192",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",