fix(nest): update nestjs versions for init generators (#11355)

This commit is contained in:
Chau Tran 2022-07-29 21:13:17 +07:00 committed by GitHub
parent 7f259493ac
commit b67ca98758
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 21 additions and 137 deletions

View File

@ -1,15 +1,6 @@
import { applicationGenerator as angularApplicationGenerator } from '@nrwl/angular/src/generators/application/application';
import type { Tree } from '@nrwl/devkit'; import type { Tree } from '@nrwl/devkit';
import * as devkit from '@nrwl/devkit'; import * as devkit from '@nrwl/devkit';
import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing'; import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing';
import * as semver from 'semver';
import {
nestJsSchematicsVersion,
nestJsVersion7,
nestJsVersion8,
rxjsVersion6,
rxjsVersion7,
} from '../../utils/versions';
import { applicationGenerator } from './application'; import { applicationGenerator } from './application';
describe('application generator', () => { describe('application generator', () => {
@ -76,73 +67,4 @@ describe('application generator', () => {
expect(devkit.formatFiles).not.toHaveBeenCalled(); expect(devkit.formatFiles).not.toHaveBeenCalled();
}); });
}); });
describe('NestJS versions', () => {
it('should use NestJs 8 for empty workspace', async () => {
await applicationGenerator(tree, { name: appName });
const pkg = devkit.readJson(tree, `package.json`);
expect(pkg.dependencies['rxjs']).toBe(rxjsVersion7);
expect(pkg.dependencies['@nestjs/common']).toBe(nestJsVersion8);
expect(pkg.devDependencies['@nestjs/schematics']).toBe(
nestJsSchematicsVersion
);
});
it(`should use NestJs 8 for Angular + RxJS 7 (${rxjsVersion7}) workspace`, async () => {
await angularApplicationGenerator(tree, { name: 'angular-app' });
let pkg = devkit.readJson(tree, 'package.json');
pkg.dependencies['rxjs'] = rxjsVersion7;
tree.write('package.json', JSON.stringify(pkg));
await applicationGenerator(tree, { name: appName });
pkg = devkit.readJson(tree, 'package.json');
expect(pkg.dependencies['rxjs']).toBe(rxjsVersion7);
expect(pkg.dependencies['@nestjs/common']).toBe(nestJsVersion8);
expect(pkg.devDependencies['@nestjs/schematics']).toBe(
nestJsSchematicsVersion
);
});
it('should use NestJs 8 for Angular + RxJS 7 (7.4.0) workspace', async () => {
await angularApplicationGenerator(tree, { name: 'angular-app' });
let pkg = devkit.readJson(tree, 'package.json');
pkg.dependencies['rxjs'] = '~7.4.0';
tree.write('package.json', JSON.stringify(pkg));
await applicationGenerator(tree, { name: appName });
pkg = devkit.readJson(tree, 'package.json');
expect(pkg.dependencies['rxjs']).toBe('~7.4.0');
expect(pkg.dependencies['@nestjs/common']).toBe(nestJsVersion8);
expect(pkg.devDependencies['@nestjs/schematics']).toBe(
nestJsSchematicsVersion
);
});
it('should use NestJs 7 for Angular + RxJS 6 workspace', async () => {
await angularApplicationGenerator(tree, { name: 'angular-app' });
devkit.updateJson(tree, 'package.json', (json) => {
json.dependencies.rxjs = rxjsVersion6;
return json;
});
await applicationGenerator(tree, { name: appName });
const pkg = devkit.readJson(tree, `package.json`);
expect(semver.minVersion(pkg.dependencies['rxjs']).major).toBe(
semver.minVersion(rxjsVersion6).major
);
expect(pkg.dependencies['@nestjs/common']).toBe(nestJsVersion7);
expect(pkg.devDependencies['@nestjs/schematics']).toBe(
nestJsSchematicsVersion
);
});
});
}); });

View File

@ -1,11 +1,7 @@
import type { Tree } from '@nrwl/devkit'; import type { Tree } from '@nrwl/devkit';
import * as devkit from '@nrwl/devkit'; import * as devkit from '@nrwl/devkit';
import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing'; import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing';
import { import { nestJsVersion, nxVersion } from '../../utils/versions';
nestJsSchematicsVersion,
nestJsVersion8,
nxVersion,
} from '../../utils/versions';
import { initGenerator } from './init'; import { initGenerator } from './init';
describe('init generator', () => { describe('init generator', () => {
@ -20,19 +16,19 @@ describe('init generator', () => {
await initGenerator(tree, {}); await initGenerator(tree, {});
const packageJson = devkit.readJson(tree, 'package.json'); const packageJson = devkit.readJson(tree, 'package.json');
expect(packageJson.dependencies['@nestjs/common']).toBe(nestJsVersion8); expect(packageJson.dependencies['@nestjs/common']).toBe(nestJsVersion);
expect(packageJson.dependencies['@nestjs/core']).toBe(nestJsVersion8); expect(packageJson.dependencies['@nestjs/core']).toBe(nestJsVersion);
expect(packageJson.dependencies['@nestjs/platform-express']).toBe( expect(packageJson.dependencies['@nestjs/platform-express']).toBe(
nestJsVersion8 nestJsVersion
); );
expect(packageJson.dependencies['reflect-metadata']).toBeDefined(); expect(packageJson.dependencies['reflect-metadata']).toBeDefined();
expect(packageJson.dependencies['rxjs']).toBeDefined(); expect(packageJson.dependencies['rxjs']).toBeDefined();
expect(packageJson.dependencies['tslib']).toBeDefined(); expect(packageJson.dependencies['tslib']).toBeDefined();
expect(packageJson.dependencies['@nrwl/nest']).toBeUndefined(); expect(packageJson.dependencies['@nrwl/nest']).toBeUndefined();
expect(packageJson.devDependencies['@nestjs/schematics']).toBe( expect(packageJson.devDependencies['@nestjs/schematics']).toBe(
nestJsSchematicsVersion nestJsVersion
); );
expect(packageJson.devDependencies['@nestjs/testing']).toBe(nestJsVersion8); expect(packageJson.devDependencies['@nestjs/testing']).toBe(nestJsVersion);
expect(packageJson.devDependencies['@nrwl/nest']).toBe(nxVersion); expect(packageJson.devDependencies['@nrwl/nest']).toBe(nxVersion);
}); });

View File

@ -1,53 +1,27 @@
import type { GeneratorCallback, Tree } from '@nrwl/devkit'; import type { GeneratorCallback, Tree } from '@nrwl/devkit';
import { addDependenciesToPackageJson, readJson } from '@nrwl/devkit'; import { addDependenciesToPackageJson } from '@nrwl/devkit';
import { satisfies } from 'semver';
import { import {
nestJsSchematicsVersion, nestJsVersion,
nestJsVersion7,
nestJsVersion8,
nxVersion, nxVersion,
reflectMetadataVersion, reflectMetadataVersion,
rxjsVersion6, rxjsVersion,
rxjsVersion7,
tsLibVersion, tsLibVersion,
} from '../../../utils/versions'; } from '../../../utils/versions';
export function addDependencies(tree: Tree): GeneratorCallback { export function addDependencies(tree: Tree): GeneratorCallback {
// Old nest 7 and rxjs 6 by default
let NEST_VERSION = nestJsVersion7;
let RXJS = rxjsVersion6;
const packageJson = readJson(tree, 'package.json');
if (packageJson.dependencies['@angular/core']) {
let rxjs = packageJson.dependencies['rxjs'];
if (rxjs.startsWith('~') || rxjs.startsWith('^')) {
rxjs = rxjs.substring(1);
}
if (satisfies(rxjs, rxjsVersion7)) {
NEST_VERSION = nestJsVersion8;
RXJS = packageJson.dependencies['rxjs'];
}
} else {
NEST_VERSION = nestJsVersion8;
RXJS = rxjsVersion7;
}
return addDependenciesToPackageJson( return addDependenciesToPackageJson(
tree, tree,
{ {
'@nestjs/common': NEST_VERSION, '@nestjs/common': nestJsVersion,
'@nestjs/core': NEST_VERSION, '@nestjs/core': nestJsVersion,
'@nestjs/platform-express': NEST_VERSION, '@nestjs/platform-express': nestJsVersion,
'reflect-metadata': reflectMetadataVersion, 'reflect-metadata': reflectMetadataVersion,
rxjs: RXJS, rxjs: rxjsVersion,
tslib: tsLibVersion, tslib: tsLibVersion,
}, },
{ {
'@nestjs/schematics': nestJsSchematicsVersion, '@nestjs/schematics': nestJsVersion,
'@nestjs/testing': NEST_VERSION, '@nestjs/testing': nestJsVersion,
'@nrwl/nest': nxVersion, '@nrwl/nest': nxVersion,
} }
); );

View File

@ -1,13 +1,12 @@
import { formatFiles, logger, readJson, Tree, updateJson } from '@nrwl/devkit'; import { formatFiles, logger, readJson, Tree, updateJson } from '@nrwl/devkit';
import { checkAndCleanWithSemver } from '@nrwl/workspace'; import { checkAndCleanWithSemver } from '@nrwl/workspace';
import { satisfies } from 'semver'; import { satisfies } from 'semver';
import {
nestJsSchematicsVersion,
nestJsVersion8,
rxjsVersion7,
} from '../../utils/versions';
import { sortObjectByKeys } from '@nrwl/workspace/src/utils/ast-utils'; import { sortObjectByKeys } from '@nrwl/workspace/src/utils/ast-utils';
const nestJsSchematicsVersion = '^9.0.0';
const nestJsVersion8 = '^8.0.0';
const rxjsVersion7 = '^7.0.0';
export default async function update(tree: Tree) { export default async function update(tree: Tree) {
const shouldUpdate = await isUpdatable(tree); const shouldUpdate = await isUpdatable(tree);

View File

@ -1,13 +1,6 @@
export const nxVersion = require('../../package.json').version; export const nxVersion = require('../../package.json').version;
export const nestJsVersion7 = '^7.0.0'; export const nestJsVersion = '^9.0.0';
export const nestJsVersion8 = '^8.0.0'; export const rxjsVersion = '^7.0.0';
export const nestJsSchematicsVersion = '^8.0.0';
export const rxjsVersion6 = '~6.6.3';
export const rxjsVersion7 = '^7.0.0';
export const reflectMetadataVersion = '^0.1.13'; export const reflectMetadataVersion = '^0.1.13';
export const tsLibVersion = '^2.3.0'; export const tsLibVersion = '^2.3.0';