nx 13.8.8 → 13.9.0-beta.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.
Files changed (100) hide show
  1. package/bin/nx.d.ts +1 -0
  2. package/bin/nx.js +78 -1
  3. package/bin/nx.js.map +1 -1
  4. package/package.json +19 -2
  5. package/src/cli/decorate-cli.d.ts +1 -0
  6. package/src/cli/decorate-cli.js +19 -0
  7. package/src/cli/decorate-cli.js.map +1 -0
  8. package/src/cli/find-workspace-root.d.ts +8 -0
  9. package/src/cli/find-workspace-root.js +25 -0
  10. package/src/cli/find-workspace-root.js.map +1 -0
  11. package/src/cli/index.d.ts +3 -0
  12. package/src/cli/index.js +74 -0
  13. package/src/cli/index.js.map +1 -0
  14. package/src/cli/init-local.d.ts +2 -0
  15. package/src/cli/init-local.js +109 -0
  16. package/src/cli/init-local.js.map +1 -0
  17. package/src/cli/is_ci.d.ts +1 -0
  18. package/src/cli/is_ci.js +20 -0
  19. package/src/cli/is_ci.js.map +1 -0
  20. package/src/cli/output.d.ts +58 -0
  21. package/src/cli/output.js +129 -0
  22. package/src/cli/output.js.map +1 -0
  23. package/src/cli/parse-run-one-options.d.ts +6 -0
  24. package/src/cli/parse-run-one-options.js +139 -0
  25. package/src/cli/parse-run-one-options.js.map +1 -0
  26. package/src/cli/run-cli.d.ts +1 -0
  27. package/src/cli/run-cli.js +69 -0
  28. package/src/cli/run-cli.js.map +1 -0
  29. package/src/cli/workspace.d.ts +4 -0
  30. package/src/cli/workspace.js +3 -0
  31. package/src/cli/workspace.js.map +1 -0
  32. package/src/commands/generate.d.ts +15 -0
  33. package/src/commands/generate.js +170 -0
  34. package/src/commands/generate.js.map +1 -0
  35. package/src/commands/help.d.ts +1 -0
  36. package/src/commands/help.js +34 -0
  37. package/src/commands/help.js.map +1 -0
  38. package/src/commands/migrate.d.ts +77 -0
  39. package/src/commands/migrate.js +584 -0
  40. package/src/commands/migrate.js.map +1 -0
  41. package/src/commands/ngcli-adapter.d.ts +111 -0
  42. package/src/commands/ngcli-adapter.js +940 -0
  43. package/src/commands/ngcli-adapter.js.map +1 -0
  44. package/src/commands/run.d.ts +51 -0
  45. package/src/commands/run.js +224 -0
  46. package/src/commands/run.js.map +1 -0
  47. package/src/compat/compat.d.ts +1 -0
  48. package/src/compat/compat.js +86 -0
  49. package/src/compat/compat.js.map +1 -0
  50. package/src/shared/logger.d.ts +11 -0
  51. package/src/shared/logger.js +48 -0
  52. package/src/shared/logger.js.map +1 -0
  53. package/src/shared/nx-plugin.d.ts +18 -0
  54. package/src/shared/nx-plugin.js +53 -0
  55. package/src/shared/nx-plugin.js.map +1 -0
  56. package/src/shared/nx.d.ts +110 -0
  57. package/src/shared/nx.js +3 -0
  58. package/src/shared/nx.js.map +1 -0
  59. package/src/shared/package-json.d.ts +28 -0
  60. package/src/shared/package-json.js +10 -0
  61. package/src/shared/package-json.js.map +1 -0
  62. package/src/shared/package-manager.d.ts +32 -0
  63. package/src/shared/package-manager.js +83 -0
  64. package/src/shared/package-manager.js.map +1 -0
  65. package/src/shared/params.d.ts +113 -0
  66. package/src/shared/params.js +587 -0
  67. package/src/shared/params.js.map +1 -0
  68. package/src/shared/print-help.d.ts +2 -0
  69. package/src/shared/print-help.js +32 -0
  70. package/src/shared/print-help.js.map +1 -0
  71. package/src/shared/project-graph.d.ts +135 -0
  72. package/src/shared/project-graph.js +22 -0
  73. package/src/shared/project-graph.js.map +1 -0
  74. package/src/shared/tasks.d.ts +82 -0
  75. package/src/shared/tasks.js +3 -0
  76. package/src/shared/tasks.js.map +1 -0
  77. package/src/shared/tree.d.ts +115 -0
  78. package/src/shared/tree.js +259 -0
  79. package/src/shared/tree.js.map +1 -0
  80. package/src/shared/workspace.d.ts +257 -0
  81. package/src/shared/workspace.js +522 -0
  82. package/src/shared/workspace.js.map +1 -0
  83. package/src/utils/app-root.d.ts +2 -0
  84. package/src/utils/app-root.js +30 -0
  85. package/src/utils/app-root.js.map +1 -0
  86. package/src/utils/fileutils.d.ts +31 -0
  87. package/src/utils/fileutils.js +45 -0
  88. package/src/utils/fileutils.js.map +1 -0
  89. package/src/utils/json.d.ts +39 -0
  90. package/src/utils/json.js +48 -0
  91. package/src/utils/json.js.map +1 -0
  92. package/src/utils/object-sort.d.ts +1 -0
  93. package/src/utils/object-sort.js +12 -0
  94. package/src/utils/object-sort.js.map +1 -0
  95. package/src/utils/register.d.ts +9 -0
  96. package/src/utils/register.js +36 -0
  97. package/src/utils/register.js.map +1 -0
  98. package/src/utils/split-target.d.ts +1 -0
  99. package/src/utils/split-target.js +26 -0
  100. package/src/utils/split-target.js.map +1 -0
@@ -0,0 +1,584 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.migrate = exports.parseMigrationsOptions = exports.Migrator = exports.normalizeVersion = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const child_process_1 = require("child_process");
6
+ const fs_extra_1 = require("fs-extra");
7
+ const yargsParser = require("yargs-parser");
8
+ const path_1 = require("path");
9
+ const semver_1 = require("semver");
10
+ const tmp_1 = require("tmp");
11
+ const logger_1 = require("../shared/logger");
12
+ const params_1 = require("../shared/params");
13
+ const package_manager_1 = require("../shared/package-manager");
14
+ const tree_1 = require("../shared/tree");
15
+ const fileutils_1 = require("../utils/fileutils");
16
+ function normalizeVersion(version) {
17
+ const [v, t] = version.split('-');
18
+ const [major, minor, patch] = v.split('.');
19
+ const newV = `${major || 0}.${minor || 0}.${patch || 0}`;
20
+ const newVersion = t ? `${newV}-${t}` : newV;
21
+ try {
22
+ (0, semver_1.gt)(newVersion, '0.0.0');
23
+ return newVersion;
24
+ }
25
+ catch (e) {
26
+ try {
27
+ (0, semver_1.gt)(newV, '0.0.0');
28
+ return newV;
29
+ }
30
+ catch (e) {
31
+ const withoutPatch = `${major || 0}.${minor || 0}.0`;
32
+ try {
33
+ if ((0, semver_1.gt)(withoutPatch, '0.0.0')) {
34
+ return withoutPatch;
35
+ }
36
+ }
37
+ catch (e) {
38
+ const withoutPatchAndMinor = `${major || 0}.0.0`;
39
+ try {
40
+ if ((0, semver_1.gt)(withoutPatchAndMinor, '0.0.0')) {
41
+ return withoutPatchAndMinor;
42
+ }
43
+ }
44
+ catch (e) {
45
+ return '0.0.0';
46
+ }
47
+ }
48
+ }
49
+ }
50
+ }
51
+ exports.normalizeVersion = normalizeVersion;
52
+ function slash(packageName) {
53
+ return packageName.replace(/\\/g, '/');
54
+ }
55
+ class Migrator {
56
+ constructor(opts) {
57
+ this.packageJson = opts.packageJson;
58
+ this.versions = opts.versions;
59
+ this.fetch = opts.fetch;
60
+ this.from = opts.from;
61
+ this.to = opts.to;
62
+ }
63
+ updatePackageJson(targetPackage, targetVersion) {
64
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
65
+ const packageJson = yield this._updatePackageJson(targetPackage, { version: targetVersion, addToPackageJson: false }, {});
66
+ const migrations = yield this._createMigrateJson(packageJson);
67
+ return { packageJson, migrations };
68
+ });
69
+ }
70
+ _createMigrateJson(versions) {
71
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
72
+ const migrations = yield Promise.all(Object.keys(versions).map((c) => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
73
+ const currentVersion = this.versions(c);
74
+ if (currentVersion === null)
75
+ return [];
76
+ const target = versions[c];
77
+ const migrationsJson = yield this.fetch(c, target.version);
78
+ const generators = migrationsJson.generators;
79
+ if (!generators)
80
+ return [];
81
+ return Object.keys(generators)
82
+ .filter((r) => generators[r].version &&
83
+ this.gt(generators[r].version, currentVersion) &&
84
+ this.lte(generators[r].version, target.version))
85
+ .map((r) => (Object.assign(Object.assign({}, migrationsJson.generators[r]), { package: c, name: r })));
86
+ })));
87
+ return migrations.reduce((m, c) => [...m, ...c], []);
88
+ });
89
+ }
90
+ _updatePackageJson(targetPackage, target, collectedVersions) {
91
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
92
+ let targetVersion = target.version;
93
+ if (this.to[targetPackage]) {
94
+ targetVersion = this.to[targetPackage];
95
+ }
96
+ if (!this.versions(targetPackage)) {
97
+ return {
98
+ [targetPackage]: {
99
+ version: target.version,
100
+ addToPackageJson: target.addToPackageJson || false,
101
+ },
102
+ };
103
+ }
104
+ let migrationsJson;
105
+ try {
106
+ migrationsJson = yield this.fetch(targetPackage, targetVersion);
107
+ targetVersion = migrationsJson.version;
108
+ }
109
+ catch (e) {
110
+ if (e.message.indexOf('No matching version') > -1) {
111
+ throw new Error(`${e.message}\nRun migrate with --to="package1@version1,package2@version2"`);
112
+ }
113
+ else {
114
+ throw e;
115
+ }
116
+ }
117
+ const packages = this.collapsePackages(targetPackage, targetVersion, migrationsJson);
118
+ const childCalls = yield Promise.all(Object.keys(packages)
119
+ .filter((r) => {
120
+ return (!collectedVersions[r] ||
121
+ this.gt(packages[r].version, collectedVersions[r].version));
122
+ })
123
+ .map((u) => this._updatePackageJson(u, packages[u], Object.assign(Object.assign({}, collectedVersions), { [targetPackage]: target }))));
124
+ return childCalls.reduce((m, c) => {
125
+ Object.keys(c).forEach((r) => {
126
+ if (!m[r] || this.gt(c[r].version, m[r].version)) {
127
+ m[r] = c[r];
128
+ }
129
+ });
130
+ return m;
131
+ }, {
132
+ [targetPackage]: {
133
+ version: migrationsJson.version,
134
+ addToPackageJson: target.addToPackageJson || false,
135
+ },
136
+ });
137
+ });
138
+ }
139
+ collapsePackages(packageName, targetVersion, m) {
140
+ // this should be used to know what version to include
141
+ // we should use from everywhere we use versions
142
+ if (packageName === '@nrwl/workspace') {
143
+ if (!m.packageJsonUpdates)
144
+ m.packageJsonUpdates = {};
145
+ m.packageJsonUpdates[`${targetVersion}-defaultPackages`] = {
146
+ version: targetVersion,
147
+ packages: [
148
+ 'nx',
149
+ '@nrwl/angular',
150
+ '@nrwl/cypress',
151
+ '@nrwl/devkit',
152
+ '@nrwl/eslint-plugin-nx',
153
+ '@nrwl/express',
154
+ '@nrwl/jest',
155
+ '@nrwl/js',
156
+ '@nrwl/linter',
157
+ '@nrwl/nest',
158
+ '@nrwl/next',
159
+ '@nrwl/node',
160
+ '@nrwl/nx-cloud',
161
+ '@nrwl/nx-plugin',
162
+ '@nrwl/react',
163
+ '@nrwl/storybook',
164
+ '@nrwl/web',
165
+ '@nrwl/react-native',
166
+ '@nrwl/detox',
167
+ ].reduce((m, c) => (Object.assign(Object.assign({}, m), { [c]: {
168
+ version: c === '@nrwl/nx-cloud' ? 'latest' : targetVersion,
169
+ alwaysAddToPackageJson: false,
170
+ } })), {}),
171
+ };
172
+ }
173
+ if (!m.packageJsonUpdates || !this.versions(packageName))
174
+ return {};
175
+ return Object.keys(m.packageJsonUpdates)
176
+ .filter((r) => {
177
+ return (this.gt(m.packageJsonUpdates[r].version, this.versions(packageName)) && this.lte(m.packageJsonUpdates[r].version, targetVersion));
178
+ })
179
+ .map((r) => m.packageJsonUpdates[r].packages)
180
+ .map((packages) => {
181
+ if (!packages)
182
+ return {};
183
+ return Object.keys(packages)
184
+ .filter((pkg) => {
185
+ const { dependencies, devDependencies } = this.packageJson;
186
+ return ((!packages[pkg].ifPackageInstalled ||
187
+ this.versions(packages[pkg].ifPackageInstalled)) &&
188
+ (packages[pkg].alwaysAddToPackageJson ||
189
+ packages[pkg].addToPackageJson ||
190
+ !!(dependencies === null || dependencies === void 0 ? void 0 : dependencies[pkg]) ||
191
+ !!(devDependencies === null || devDependencies === void 0 ? void 0 : devDependencies[pkg])));
192
+ })
193
+ .reduce((m, c) => (Object.assign(Object.assign({}, m), { [c]: {
194
+ version: packages[c].version,
195
+ addToPackageJson: packages[c].alwaysAddToPackageJson
196
+ ? 'dependencies'
197
+ : packages[c].addToPackageJson || false,
198
+ } })), {});
199
+ })
200
+ .reduce((m, c) => (Object.assign(Object.assign({}, m), c)), {});
201
+ }
202
+ gt(v1, v2) {
203
+ return (0, semver_1.gt)(normalizeVersion(v1), normalizeVersion(v2));
204
+ }
205
+ lte(v1, v2) {
206
+ return (0, semver_1.lte)(normalizeVersion(v1), normalizeVersion(v2));
207
+ }
208
+ }
209
+ exports.Migrator = Migrator;
210
+ function normalizeVersionWithTagCheck(version) {
211
+ if (version === 'latest' || version === 'next')
212
+ return version;
213
+ return normalizeVersion(version);
214
+ }
215
+ function versionOverrides(overrides, param) {
216
+ const res = {};
217
+ overrides.split(',').forEach((p) => {
218
+ const split = p.lastIndexOf('@');
219
+ if (split === -1 || split === 0) {
220
+ throw new Error(`Incorrect '${param}' section. Use --${param}="package@version"`);
221
+ }
222
+ const selectedPackage = p.substring(0, split).trim();
223
+ const selectedVersion = p.substring(split + 1).trim();
224
+ if (!selectedPackage || !selectedVersion) {
225
+ throw new Error(`Incorrect '${param}' section. Use --${param}="package@version"`);
226
+ }
227
+ res[slash(selectedPackage)] = normalizeVersionWithTagCheck(selectedVersion);
228
+ });
229
+ return res;
230
+ }
231
+ function parseTargetPackageAndVersion(args) {
232
+ if (!args) {
233
+ throw new Error(`Provide the correct package name and version. E.g., @nrwl/workspace@9.0.0.`);
234
+ }
235
+ if (args.indexOf('@') > -1) {
236
+ const i = args.lastIndexOf('@');
237
+ if (i === 0) {
238
+ const targetPackage = args.trim();
239
+ const targetVersion = 'latest';
240
+ return { targetPackage, targetVersion };
241
+ }
242
+ else {
243
+ const targetPackage = args.substring(0, i);
244
+ const maybeVersion = args.substring(i + 1);
245
+ if (!targetPackage || !maybeVersion) {
246
+ throw new Error(`Provide the correct package name and version. E.g., @nrwl/workspace@9.0.0.`);
247
+ }
248
+ const targetVersion = normalizeVersionWithTagCheck(maybeVersion);
249
+ return { targetPackage, targetVersion };
250
+ }
251
+ }
252
+ else {
253
+ if (args.match(/^\d+(?:\.\d+)?(?:\.\d+)?$/) ||
254
+ args === 'latest' ||
255
+ args === 'next') {
256
+ return {
257
+ targetPackage: '@nrwl/workspace',
258
+ targetVersion: normalizeVersionWithTagCheck(args),
259
+ };
260
+ }
261
+ else {
262
+ return {
263
+ targetPackage: args,
264
+ targetVersion: 'latest',
265
+ };
266
+ }
267
+ }
268
+ }
269
+ function parseMigrationsOptions(args) {
270
+ const options = (0, params_1.convertToCamelCase)(yargsParser(args, {
271
+ string: ['runMigrations', 'from', 'to'],
272
+ alias: {
273
+ runMigrations: 'run-migrations',
274
+ },
275
+ }));
276
+ if (options.runMigrations === '') {
277
+ options.runMigrations = 'migrations.json';
278
+ }
279
+ if (!options.runMigrations) {
280
+ const from = options.from
281
+ ? versionOverrides(options.from, 'from')
282
+ : {};
283
+ const to = options.to ? versionOverrides(options.to, 'to') : {};
284
+ const { targetPackage, targetVersion } = parseTargetPackageAndVersion(args[0]);
285
+ return {
286
+ type: 'generateMigrations',
287
+ targetPackage: slash(targetPackage),
288
+ targetVersion,
289
+ from,
290
+ to,
291
+ };
292
+ }
293
+ else {
294
+ return {
295
+ type: 'runMigrations',
296
+ runMigrations: options.runMigrations,
297
+ };
298
+ }
299
+ }
300
+ exports.parseMigrationsOptions = parseMigrationsOptions;
301
+ function versions(root, from) {
302
+ return (packageName) => {
303
+ try {
304
+ if (from[packageName]) {
305
+ return from[packageName];
306
+ }
307
+ const packageJsonPath = require.resolve(`${packageName}/package.json`, {
308
+ paths: [root],
309
+ });
310
+ return (0, fileutils_1.readJsonFile)(packageJsonPath).version;
311
+ }
312
+ catch (_a) {
313
+ return null;
314
+ }
315
+ };
316
+ }
317
+ // testing-fetch-start
318
+ function createFetcher() {
319
+ const cache = {};
320
+ return function f(packageName, packageVersion) {
321
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
322
+ if (!cache[`${packageName}-${packageVersion}`]) {
323
+ const dir = (0, tmp_1.dirSync)().name;
324
+ const npmrc = checkForNPMRC();
325
+ if (npmrc) {
326
+ // Creating a package.json is needed for .npmrc to resolve
327
+ (0, fileutils_1.writeJsonFile)(`${dir}/package.json`, {});
328
+ // Copy npmrc if it exists, so that npm still follows it.
329
+ (0, fs_extra_1.copyFileSync)(npmrc, `${dir}/.npmrc`);
330
+ }
331
+ logger_1.logger.info(`Fetching ${packageName}@${packageVersion}`);
332
+ const pmc = (0, package_manager_1.getPackageManagerCommand)();
333
+ (0, child_process_1.execSync)(`${pmc.add} ${packageName}@${packageVersion}`, {
334
+ stdio: [],
335
+ cwd: dir,
336
+ });
337
+ const migrationsFilePath = packageToMigrationsFilePath(packageName, dir);
338
+ const packageJsonPath = require.resolve(`${packageName}/package.json`, {
339
+ paths: [dir],
340
+ });
341
+ const json = (0, fileutils_1.readJsonFile)(packageJsonPath);
342
+ // packageVersion can be a tag, resolvedVersion works with semver
343
+ const resolvedVersion = json.version;
344
+ if (migrationsFilePath) {
345
+ const json = (0, fileutils_1.readJsonFile)(migrationsFilePath);
346
+ cache[`${packageName}-${packageVersion}`] = {
347
+ version: resolvedVersion,
348
+ generators: json.generators || json.schematics,
349
+ packageJsonUpdates: json.packageJsonUpdates,
350
+ };
351
+ }
352
+ else {
353
+ cache[`${packageName}-${packageVersion}`] = {
354
+ version: resolvedVersion,
355
+ };
356
+ }
357
+ try {
358
+ (0, fs_extra_1.removeSync)(dir);
359
+ }
360
+ catch (_a) {
361
+ // It's okay if this fails, the OS will clean it up eventually
362
+ }
363
+ }
364
+ return cache[`${packageName}-${packageVersion}`];
365
+ });
366
+ };
367
+ }
368
+ // testing-fetch-end
369
+ function packageToMigrationsFilePath(packageName, dir) {
370
+ const packageJsonPath = require.resolve(`${packageName}/package.json`, {
371
+ paths: [dir],
372
+ });
373
+ const json = (0, fileutils_1.readJsonFile)(packageJsonPath);
374
+ let migrationsFile = json['nx-migrations'] || json['ng-update'];
375
+ // migrationsFile is an object
376
+ if (migrationsFile && migrationsFile.migrations) {
377
+ migrationsFile = migrationsFile.migrations;
378
+ }
379
+ try {
380
+ if (migrationsFile && typeof migrationsFile === 'string') {
381
+ return require.resolve(migrationsFile, {
382
+ paths: [(0, path_1.dirname)(packageJsonPath)],
383
+ });
384
+ }
385
+ else {
386
+ return null;
387
+ }
388
+ }
389
+ catch (_a) {
390
+ return null;
391
+ }
392
+ }
393
+ function createMigrationsFile(root, migrations) {
394
+ (0, fileutils_1.writeJsonFile)((0, path_1.join)(root, 'migrations.json'), { migrations });
395
+ }
396
+ function updatePackageJson(root, updatedPackages) {
397
+ const packageJsonPath = (0, path_1.join)(root, 'package.json');
398
+ const parseOptions = {};
399
+ const json = (0, fileutils_1.readJsonFile)(packageJsonPath, parseOptions);
400
+ Object.keys(updatedPackages).forEach((p) => {
401
+ if (json.devDependencies && json.devDependencies[p]) {
402
+ json.devDependencies[p] = updatedPackages[p].version;
403
+ }
404
+ else if (json.dependencies && json.dependencies[p]) {
405
+ json.dependencies[p] = updatedPackages[p].version;
406
+ }
407
+ else if (updatedPackages[p].addToPackageJson) {
408
+ if (updatedPackages[p].addToPackageJson === 'dependencies') {
409
+ if (!json.dependencies)
410
+ json.dependencies = {};
411
+ json.dependencies[p] = updatedPackages[p].version;
412
+ }
413
+ else if (updatedPackages[p].addToPackageJson === 'devDependencies') {
414
+ if (!json.devDependencies)
415
+ json.devDependencies = {};
416
+ json.devDependencies[p] = updatedPackages[p].version;
417
+ }
418
+ }
419
+ });
420
+ (0, fileutils_1.writeJsonFile)(packageJsonPath, json, {
421
+ appendNewLine: parseOptions.endsWithNewline,
422
+ });
423
+ }
424
+ function generateMigrationsJsonAndUpdatePackageJson(root, opts) {
425
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
426
+ const pmc = (0, package_manager_1.getPackageManagerCommand)();
427
+ try {
428
+ logger_1.logger.info(`Fetching meta data about packages.`);
429
+ logger_1.logger.info(`It may take a few minutes.`);
430
+ const originalPackageJson = (0, fileutils_1.readJsonFile)((0, path_1.join)(root, 'package.json'));
431
+ const migrator = new Migrator({
432
+ packageJson: originalPackageJson,
433
+ versions: versions(root, opts.from),
434
+ fetch: createFetcher(),
435
+ from: opts.from,
436
+ to: opts.to,
437
+ });
438
+ const { migrations, packageJson } = yield migrator.updatePackageJson(opts.targetPackage, opts.targetVersion);
439
+ updatePackageJson(root, packageJson);
440
+ if (migrations.length > 0) {
441
+ createMigrationsFile(root, migrations);
442
+ }
443
+ logger_1.logger.info(`NX The migrate command has run successfully.`);
444
+ logger_1.logger.info(`- package.json has been updated`);
445
+ if (migrations.length > 0) {
446
+ logger_1.logger.info(`- migrations.json has been generated`);
447
+ }
448
+ else {
449
+ logger_1.logger.info(`- there are no migrations to run, so migrations.json has not been created.`);
450
+ }
451
+ logger_1.logger.info(`NX Next steps:`);
452
+ logger_1.logger.info(`- Make sure package.json changes make sense and then run '${pmc.install}'`);
453
+ if (migrations.length > 0) {
454
+ logger_1.logger.info(`- Run 'nx migrate --run-migrations'`);
455
+ }
456
+ logger_1.logger.info(`- To learn more go to https://nx.dev/using-nx/updating-nx`);
457
+ if (showConnectToCloudMessage()) {
458
+ logger_1.logger.info(`- You may run "nx connect-to-nx-cloud" to get faster builds, GitHub integration, and more. Check out https://nx.app`);
459
+ }
460
+ }
461
+ catch (e) {
462
+ logger_1.logger.error(`NX The migrate command failed.`);
463
+ throw e;
464
+ }
465
+ });
466
+ }
467
+ function showConnectToCloudMessage() {
468
+ try {
469
+ const nxJson = (0, fileutils_1.readJsonFile)('nx.json');
470
+ const defaultRunnerIsUsed = Object.values(nxJson.tasksRunnerOptions).find((r) => r.runner == '@nrwl/workspace/tasks-runners/default');
471
+ return !!defaultRunnerIsUsed;
472
+ }
473
+ catch (_a) {
474
+ return false;
475
+ }
476
+ }
477
+ function installAngularDevkitIfNecessaryToExecuteLegacyMigrations(migrations) {
478
+ const hasAngularDevkitMigrations = migrations.find((m) => m.cli === undefined || m.cli === 'angular');
479
+ if (!hasAngularDevkitMigrations)
480
+ return false;
481
+ const pmCommands = (0, package_manager_1.getPackageManagerCommand)();
482
+ const devkitInstalled = (0, child_process_1.execSync)(`${pmCommands.list} @angular-devkit/schematics`)
483
+ .toString()
484
+ .indexOf(`@angular-devkit/schematics`) > -1;
485
+ if (devkitInstalled)
486
+ return false;
487
+ logger_1.logger.info(`NX Temporary installing necessary packages to run old migrations.`);
488
+ logger_1.logger.info(`The packages will be deleted once migrations run successfully.`);
489
+ (0, child_process_1.execSync)(`${pmCommands.add} @angular-devkit/core`);
490
+ (0, child_process_1.execSync)(`${pmCommands.add} @angular-devkit/schematics`);
491
+ return true;
492
+ }
493
+ function removeAngularDevkitMigrations() {
494
+ const pmCommands = (0, package_manager_1.getPackageManagerCommand)();
495
+ (0, child_process_1.execSync)(`${pmCommands.rm} @angular-devkit/schematics`);
496
+ (0, child_process_1.execSync)(`${pmCommands.rm} @angular-devkit/core`);
497
+ }
498
+ function runInstall() {
499
+ const pmCommands = (0, package_manager_1.getPackageManagerCommand)();
500
+ logger_1.logger.info(`NX Running '${pmCommands.install}' to make sure necessary packages are installed`);
501
+ (0, child_process_1.execSync)(pmCommands.install, { stdio: [0, 1, 2] });
502
+ }
503
+ function runMigrations(root, opts, isVerbose) {
504
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
505
+ if (!process.env.NX_MIGRATE_SKIP_INSTALL) {
506
+ runInstall();
507
+ }
508
+ logger_1.logger.info(`NX Running migrations from '${opts.runMigrations}'`);
509
+ const migrations = (0, fileutils_1.readJsonFile)((0, path_1.join)(root, opts.runMigrations)).migrations;
510
+ // TODO: reenable after removing devkit
511
+ // const installed = installAngularDevkitIfNecessaryToExecuteLegacyMigrations(
512
+ // migrations
513
+ // );
514
+ try {
515
+ for (let m of migrations) {
516
+ logger_1.logger.info(`Running migration ${m.name}`);
517
+ if (m.cli === 'nx') {
518
+ yield runNxMigration(root, m.package, m.name);
519
+ }
520
+ else {
521
+ yield (yield Promise.resolve().then(() => require('./ngcli-adapter'))).runMigration(root, m.package, m.name, isVerbose);
522
+ }
523
+ logger_1.logger.info(`Successfully finished ${m.name}`);
524
+ logger_1.logger.info(`---------------------------------------------------------`);
525
+ }
526
+ logger_1.logger.info(`NX Successfully finished running migrations from '${opts.runMigrations}'`);
527
+ }
528
+ finally {
529
+ // if (installed) {
530
+ // removeAngularDevkitMigrations();
531
+ // }
532
+ }
533
+ });
534
+ }
535
+ function runNxMigration(root, packageName, name) {
536
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
537
+ const collectionPath = packageToMigrationsFilePath(packageName, root);
538
+ const collection = (0, fileutils_1.readJsonFile)(collectionPath);
539
+ const g = collection.generators || collection.schematics;
540
+ const implRelativePath = g[name].implementation || g[name].factory;
541
+ let implPath;
542
+ try {
543
+ implPath = require.resolve(implRelativePath, {
544
+ paths: [(0, path_1.dirname)(collectionPath)],
545
+ });
546
+ }
547
+ catch (e) {
548
+ // workaround for a bug in node 12
549
+ implPath = require.resolve(`${(0, path_1.dirname)(collectionPath)}/${implRelativePath}`);
550
+ }
551
+ const fn = require(implPath).default;
552
+ const host = new tree_1.FsTree(root, false);
553
+ yield fn(host, {});
554
+ const changes = host.listChanges();
555
+ (0, tree_1.flushChanges)(root, changes);
556
+ });
557
+ }
558
+ function migrate(root, args, isVerbose = false) {
559
+ return (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
560
+ return (0, params_1.handleErrors)(isVerbose, () => (0, tslib_1.__awaiter)(this, void 0, void 0, function* () {
561
+ const opts = parseMigrationsOptions(args);
562
+ if (opts.type === 'generateMigrations') {
563
+ yield generateMigrationsJsonAndUpdatePackageJson(root, opts);
564
+ }
565
+ else {
566
+ yield runMigrations(root, opts, isVerbose);
567
+ }
568
+ }));
569
+ });
570
+ }
571
+ exports.migrate = migrate;
572
+ /**
573
+ * Checks for a project level npmrc file by crawling up the file tree until
574
+ * hitting a package.json file, as this is how npm finds them as well.
575
+ */
576
+ function checkForNPMRC() {
577
+ let directory = process.cwd();
578
+ while (!(0, fs_extra_1.existsSync)((0, path_1.join)(directory, 'package.json'))) {
579
+ directory = (0, path_1.dirname)(directory);
580
+ }
581
+ const path = (0, path_1.join)(directory, '.npmrc');
582
+ return (0, fs_extra_1.existsSync)(path) ? path : null;
583
+ }
584
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../../../packages/nx/src/commands/migrate.ts"],"names":[],"mappings":"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"}