fix(core): new generator not skipping package installation (#17927)
This commit is contained in:
parent
deb0f1a492
commit
abafedf8e5
@ -46,3 +46,34 @@ exports[`new should generate an empty nx.json 1`] = `
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`new should skip install 1`] = `
|
||||||
|
{
|
||||||
|
"$schema": "./node_modules/nx/schemas/nx-schema.json",
|
||||||
|
"namedInputs": {
|
||||||
|
"default": [
|
||||||
|
"{projectRoot}/**/*",
|
||||||
|
"sharedGlobals",
|
||||||
|
],
|
||||||
|
"production": [
|
||||||
|
"default",
|
||||||
|
],
|
||||||
|
"sharedGlobals": [],
|
||||||
|
},
|
||||||
|
"targetDefaults": {
|
||||||
|
"build": {
|
||||||
|
"cache": true,
|
||||||
|
"dependsOn": [
|
||||||
|
"^build",
|
||||||
|
],
|
||||||
|
"inputs": [
|
||||||
|
"production",
|
||||||
|
"^production",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"lint": {
|
||||||
|
"cache": true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
`;
|
||||||
|
|||||||
@ -1,4 +1,5 @@
|
|||||||
import { readJson, Tree, writeJson } from '@nx/devkit';
|
import { readJson, Tree, writeJson } from '@nx/devkit';
|
||||||
|
import * as devkit from '@nx/devkit';
|
||||||
import { createTree } from '@nx/devkit/testing';
|
import { createTree } from '@nx/devkit/testing';
|
||||||
import { Linter } from '../../utils/lint';
|
import { Linter } from '../../utils/lint';
|
||||||
import {
|
import {
|
||||||
@ -8,14 +9,10 @@ import {
|
|||||||
} from '../../utils/versions';
|
} from '../../utils/versions';
|
||||||
import { Preset } from '../utils/presets';
|
import { Preset } from '../utils/presets';
|
||||||
import { newGenerator, NormalizedSchema } from './new';
|
import { newGenerator, NormalizedSchema } from './new';
|
||||||
|
import * as getNpmPackageVersion from './../utils/get-npm-package-version';
|
||||||
|
import * as generatePreset from './generate-preset';
|
||||||
|
|
||||||
const DEFAULT_PACKAGE_VERSION = '1.0.0';
|
const DEFAULT_PACKAGE_VERSION = '1.0.0';
|
||||||
jest.mock('./../utils/get-npm-package-version', () => ({
|
|
||||||
...jest.requireActual<any>('./../utils/get-npm-package-version'),
|
|
||||||
getNpmPackageVersion: jest
|
|
||||||
.fn()
|
|
||||||
.mockImplementation((name, version) => version ?? DEFAULT_PACKAGE_VERSION),
|
|
||||||
}));
|
|
||||||
|
|
||||||
const defaultOptions: Omit<
|
const defaultOptions: Omit<
|
||||||
NormalizedSchema,
|
NormalizedSchema,
|
||||||
@ -29,21 +26,61 @@ const defaultOptions: Omit<
|
|||||||
|
|
||||||
describe('new', () => {
|
describe('new', () => {
|
||||||
let tree: Tree;
|
let tree: Tree;
|
||||||
|
let installPackagesTaskSpy: jest.SpyInstance;
|
||||||
|
let generatePresetSpy: jest.SpyInstance;
|
||||||
|
let getNpmPackageVersionSpy: jest.SpyInstance;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
tree = createTree();
|
tree = createTree();
|
||||||
// we need an actual path for the package manager version check
|
// we need an actual path for the package manager version check
|
||||||
tree.root = process.cwd();
|
tree.root = process.cwd();
|
||||||
|
|
||||||
|
installPackagesTaskSpy = jest
|
||||||
|
.spyOn(devkit, 'installPackagesTask')
|
||||||
|
.mockImplementation(() => undefined);
|
||||||
|
|
||||||
|
generatePresetSpy = jest
|
||||||
|
.spyOn(generatePreset, 'generatePreset')
|
||||||
|
.mockImplementation(async () => undefined);
|
||||||
|
|
||||||
|
getNpmPackageVersionSpy = jest
|
||||||
|
.spyOn(getNpmPackageVersion, 'getNpmPackageVersion')
|
||||||
|
.mockImplementation(
|
||||||
|
(name, version) => version ?? DEFAULT_PACKAGE_VERSION
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
jest.resetAllMocks();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should generate an empty nx.json', async () => {
|
it('should generate an empty nx.json', async () => {
|
||||||
await newGenerator(tree, {
|
await (
|
||||||
...defaultOptions,
|
await newGenerator(tree, {
|
||||||
name: 'my-workspace',
|
...defaultOptions,
|
||||||
directory: 'my-workspace',
|
name: 'my-workspace',
|
||||||
appName: 'app',
|
directory: 'my-workspace',
|
||||||
});
|
appName: 'app',
|
||||||
|
})
|
||||||
|
)();
|
||||||
expect(readJson(tree, 'my-workspace/nx.json')).toMatchSnapshot();
|
expect(readJson(tree, 'my-workspace/nx.json')).toMatchSnapshot();
|
||||||
|
expect(installPackagesTaskSpy).toHaveBeenCalled();
|
||||||
|
expect(generatePresetSpy).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should skip install', async () => {
|
||||||
|
await (
|
||||||
|
await newGenerator(tree, {
|
||||||
|
...defaultOptions,
|
||||||
|
name: 'my-workspace',
|
||||||
|
directory: 'my-workspace',
|
||||||
|
appName: 'app',
|
||||||
|
skipInstall: true,
|
||||||
|
})
|
||||||
|
)();
|
||||||
|
expect(readJson(tree, 'my-workspace/nx.json')).toMatchSnapshot();
|
||||||
|
expect(installPackagesTaskSpy).not.toHaveBeenCalled();
|
||||||
|
expect(generatePresetSpy).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('--preset', () => {
|
describe('--preset', () => {
|
||||||
|
|||||||
@ -50,14 +50,22 @@ export async function newGenerator(tree: Tree, opts: Schema) {
|
|||||||
addPresetDependencies(tree, options);
|
addPresetDependencies(tree, options);
|
||||||
|
|
||||||
return async () => {
|
return async () => {
|
||||||
const pmc = getPackageManagerCommand(options.packageManager);
|
if (!options.skipInstall) {
|
||||||
if (pmc.preInstall) {
|
const pmc = getPackageManagerCommand(options.packageManager);
|
||||||
execSync(pmc.preInstall, {
|
if (pmc.preInstall) {
|
||||||
cwd: joinPathFragments(tree.root, options.directory),
|
execSync(pmc.preInstall, {
|
||||||
stdio: process.env.NX_GENERATE_QUIET === 'true' ? 'ignore' : 'inherit',
|
cwd: joinPathFragments(tree.root, options.directory),
|
||||||
});
|
stdio:
|
||||||
|
process.env.NX_GENERATE_QUIET === 'true' ? 'ignore' : 'inherit',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
installPackagesTask(
|
||||||
|
tree,
|
||||||
|
false,
|
||||||
|
options.directory,
|
||||||
|
options.packageManager
|
||||||
|
);
|
||||||
}
|
}
|
||||||
installPackagesTask(tree, false, options.directory, options.packageManager);
|
|
||||||
// TODO: move all of these into create-nx-workspace
|
// TODO: move all of these into create-nx-workspace
|
||||||
if (options.preset !== Preset.NPM && !options.isCustomPreset) {
|
if (options.preset !== Preset.NPM && !options.isCustomPreset) {
|
||||||
await generatePreset(tree, options);
|
await generatePreset(tree, options);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user