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 * as devkit from '@nrwl/devkit';
import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing';
import * as semver from 'semver';
import {
nestJsSchematicsVersion,
nestJsVersion7,
nestJsVersion8,
rxjsVersion6,
rxjsVersion7,
} from '../../utils/versions';
import { applicationGenerator } from './application';
describe('application generator', () => {
@ -76,73 +67,4 @@ describe('application generator', () => {
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 * as devkit from '@nrwl/devkit';
import { createTreeWithEmptyWorkspace } from '@nrwl/devkit/testing';
import {
nestJsSchematicsVersion,
nestJsVersion8,
nxVersion,
} from '../../utils/versions';
import { nestJsVersion, nxVersion } from '../../utils/versions';
import { initGenerator } from './init';
describe('init generator', () => {
@ -20,19 +16,19 @@ describe('init generator', () => {
await initGenerator(tree, {});
const packageJson = devkit.readJson(tree, 'package.json');
expect(packageJson.dependencies['@nestjs/common']).toBe(nestJsVersion8);
expect(packageJson.dependencies['@nestjs/core']).toBe(nestJsVersion8);
expect(packageJson.dependencies['@nestjs/common']).toBe(nestJsVersion);
expect(packageJson.dependencies['@nestjs/core']).toBe(nestJsVersion);
expect(packageJson.dependencies['@nestjs/platform-express']).toBe(
nestJsVersion8
nestJsVersion
);
expect(packageJson.dependencies['reflect-metadata']).toBeDefined();
expect(packageJson.dependencies['rxjs']).toBeDefined();
expect(packageJson.dependencies['tslib']).toBeDefined();
expect(packageJson.dependencies['@nrwl/nest']).toBeUndefined();
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);
});

View File

@ -1,53 +1,27 @@
import type { GeneratorCallback, Tree } from '@nrwl/devkit';
import { addDependenciesToPackageJson, readJson } from '@nrwl/devkit';
import { satisfies } from 'semver';
import { addDependenciesToPackageJson } from '@nrwl/devkit';
import {
nestJsSchematicsVersion,
nestJsVersion7,
nestJsVersion8,
nestJsVersion,
nxVersion,
reflectMetadataVersion,
rxjsVersion6,
rxjsVersion7,
rxjsVersion,
tsLibVersion,
} from '../../../utils/versions';
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(
tree,
{
'@nestjs/common': NEST_VERSION,
'@nestjs/core': NEST_VERSION,
'@nestjs/platform-express': NEST_VERSION,
'@nestjs/common': nestJsVersion,
'@nestjs/core': nestJsVersion,
'@nestjs/platform-express': nestJsVersion,
'reflect-metadata': reflectMetadataVersion,
rxjs: RXJS,
rxjs: rxjsVersion,
tslib: tsLibVersion,
},
{
'@nestjs/schematics': nestJsSchematicsVersion,
'@nestjs/testing': NEST_VERSION,
'@nestjs/schematics': nestJsVersion,
'@nestjs/testing': nestJsVersion,
'@nrwl/nest': nxVersion,
}
);

View File

@ -1,13 +1,12 @@
import { formatFiles, logger, readJson, Tree, updateJson } from '@nrwl/devkit';
import { checkAndCleanWithSemver } from '@nrwl/workspace';
import { satisfies } from 'semver';
import {
nestJsSchematicsVersion,
nestJsVersion8,
rxjsVersion7,
} from '../../utils/versions';
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) {
const shouldUpdate = await isUpdatable(tree);

View File

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