From c6ad657c9f3b57e17b2fc3ac5e32f58e5606f38a Mon Sep 17 00:00:00 2001 From: Craigory Coppola Date: Mon, 26 Jun 2023 17:07:11 -0400 Subject: [PATCH] fix(misc): prevent unexpected targets from root package.json when setting up root project (#17805) --- .../setup-verdaccio/generator.spec.ts | 45 ++++++++++++++++++- .../generators/setup-verdaccio/generator.ts | 8 ++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/packages/js/src/generators/setup-verdaccio/generator.spec.ts b/packages/js/src/generators/setup-verdaccio/generator.spec.ts index 40d6f276624a5..47591785d2ec8 100644 --- a/packages/js/src/generators/setup-verdaccio/generator.spec.ts +++ b/packages/js/src/generators/setup-verdaccio/generator.spec.ts @@ -1,5 +1,5 @@ import { createTreeWithEmptyWorkspace } from '@nx/devkit/testing'; -import { Tree, readJson, readProjectConfiguration } from '@nx/devkit'; +import { Tree, readJson, updateJson } from '@nx/devkit'; import generator from './generator'; import { SetupVerdaccioGeneratorSchema } from './schema'; @@ -30,6 +30,49 @@ describe('setup-verdaccio generator', () => { }, }, }); + const packageJson = readJson(tree, 'package.json'); + expect(packageJson.nx).toEqual({ + includedScripts: [], + }); + }); + + it('should not override existing root project settings from package.json', async () => { + updateJson(tree, 'package.json', (json) => { + json.nx = { + includedScripts: ['test'], + targets: { + build: { + outputs: ['dist'], + }, + }, + }; + return json; + }); + await generator(tree, options); + const config = readJson(tree, 'project.json'); + expect(config).toEqual({ + name: 'test-name', + $schema: 'node_modules/nx/schemas/project-schema.json', + targets: { + 'local-registry': { + executor: '@nx/js:verdaccio', + options: { + port: 4873, + config: '.verdaccio/config.yml', + storage: 'tmp/local-registry/storage', + }, + }, + }, + }); + const packageJson = readJson(tree, 'package.json'); + expect(packageJson.nx).toEqual({ + includedScripts: ['test'], + targets: { + build: { + outputs: ['dist'], + }, + }, + }); }); it('should add local-registry target to project.json', async () => { diff --git a/packages/js/src/generators/setup-verdaccio/generator.ts b/packages/js/src/generators/setup-verdaccio/generator.ts index 8b452fa487379..380d468495863 100644 --- a/packages/js/src/generators/setup-verdaccio/generator.ts +++ b/packages/js/src/generators/setup-verdaccio/generator.ts @@ -37,6 +37,14 @@ export async function setupVerdaccio( }; if (!tree.exists('project.json')) { const { name } = readJson(tree, 'package.json'); + updateJson(tree, 'package.json', (json) => { + if (!json.nx) { + json.nx = { + includedScripts: [], + }; + } + return json; + }); addProjectConfiguration(tree, name, { root: '.', targets: {