diff --git a/tools/workspace-plugin/src/generators/create-nodes-plugin/__snapshots__/generator.spec.ts.snap b/tools/workspace-plugin/src/generators/create-nodes-plugin/__snapshots__/generator.spec.ts.snap index 214e2bb562..d345e64ccb 100644 --- a/tools/workspace-plugin/src/generators/create-nodes-plugin/__snapshots__/generator.spec.ts.snap +++ b/tools/workspace-plugin/src/generators/create-nodes-plugin/__snapshots__/generator.spec.ts.snap @@ -1,5 +1,59 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`create-nodes-plugin/generator generator should add the plugin path to package.json exports 1`] = ` +"{ + "name": "@nx/eslint", + "version": "0.0.1", + "private": false, + "description": "Some description", + "repository": { + "type": "git", + "url": "https://github.com/nrwl/nx.git", + "directory": "packages/eslint" + }, + "keywords": [ + "Monorepo", + "eslint", + "Web", + "CLI" + ], + "main": "./index", + "typings": "./index.d.ts", + "author": "Victor Savkin", + "license": "MIT", + "bugs": { + "url": "https://github.com/nrwl/nx/issues" + }, + "homepage": "https://nx.dev", + "generators": "./generators.json", + "executors": "./executors.json", + "ng-update": { + "requirements": {}, + "migrations": "./migrations.json" + }, + "dependencies": { + "@nx/devkit": "file:../devkit" + }, + "peerDependencies": {}, + "publishConfig": { + "access": "public" + }, + "exports": { + ".": "./index.js", + "./package.json": "./package.json", + "./migrations.json": "./migrations.json", + "./generators.json": "./generators.json", + "./executors.json": "./executors.json", + "./executors": "./executors.js", + "./src/executors/*/schema.json": "./src/executors/*/schema.json", + "./src/executors/*.impl": "./src/executors/*.impl.js", + "./src/executors/*/compat": "./src/executors/*/compat.js", + "./plugin": "./plugin.js" + } +} +" +`; + exports[`create-nodes-plugin/generator generator should run successfully 1`] = ` "import { CreateNodes, diff --git a/tools/workspace-plugin/src/generators/create-nodes-plugin/generator.spec.ts b/tools/workspace-plugin/src/generators/create-nodes-plugin/generator.spec.ts index 19ac42bcb2..d8ab9bc127 100644 --- a/tools/workspace-plugin/src/generators/create-nodes-plugin/generator.spec.ts +++ b/tools/workspace-plugin/src/generators/create-nodes-plugin/generator.spec.ts @@ -17,14 +17,13 @@ describe('create-nodes-plugin/generator generator', () => { }, }); - writeJson(tree, 'packages/eslint/package.json', {}); - jest.spyOn(process, 'cwd').mockReturnValue('/virtual/packages/eslint'); setCwd('packages/eslint'); }); it('should run successfully', async () => { + writeJson(tree, 'packages/eslint/package.json', {}); await generatorGenerator(tree); expect( tree.read('packages/eslint/src/plugins/plugin.ts').toString() @@ -40,4 +39,55 @@ describe('create-nodes-plugin/generator generator', () => { .toString() ).toMatchSnapshot(); }); + + it('should add the plugin path to package.json exports', async () => { + writeJson(tree, 'packages/eslint/package.json', { + name: '@nx/eslint', + version: '0.0.1', + private: false, + description: 'Some description', + repository: { + type: 'git', + url: 'https://github.com/nrwl/nx.git', + directory: 'packages/eslint', + }, + keywords: ['Monorepo', 'eslint', 'Web', 'CLI'], + main: './index', + typings: './index.d.ts', + author: 'Victor Savkin', + license: 'MIT', + bugs: { + url: 'https://github.com/nrwl/nx/issues', + }, + homepage: 'https://nx.dev', + generators: './generators.json', + executors: './executors.json', + 'ng-update': { + requirements: {}, + migrations: './migrations.json', + }, + dependencies: { + '@nx/devkit': 'file:../devkit', + }, + peerDependencies: {}, + publishConfig: { + access: 'public', + }, + exports: { + '.': './index.js', + './package.json': './package.json', + './migrations.json': './migrations.json', + './generators.json': './generators.json', + './executors.json': './executors.json', + './executors': './executors.js', + './src/executors/*/schema.json': './src/executors/*/schema.json', + './src/executors/*.impl': './src/executors/*.impl.js', + './src/executors/*/compat': './src/executors/*/compat.js', + }, + }); + await generatorGenerator(tree); + expect( + tree.read('packages/eslint/package.json', 'utf-8') + ).toMatchSnapshot(); + }); }); diff --git a/tools/workspace-plugin/src/generators/create-nodes-plugin/generator.ts b/tools/workspace-plugin/src/generators/create-nodes-plugin/generator.ts index 5bee926ea1..76f77fa4d4 100644 --- a/tools/workspace-plugin/src/generators/create-nodes-plugin/generator.ts +++ b/tools/workspace-plugin/src/generators/create-nodes-plugin/generator.ts @@ -1,4 +1,11 @@ -import { formatFiles, generateFiles, names, Tree } from '@nx/devkit'; +import { + formatFiles, + generateFiles, + joinPathFragments, + names, + Tree, + updateJson, +} from '@nx/devkit'; import { basename, join, relative } from 'path'; import migrationGenerator from '@nx/plugin/src/generators/migration/migration'; @@ -21,6 +28,17 @@ export async function generatorGenerator(tree: Tree) { propertyName, }); + updateJson( + tree, + joinPathFragments(relative(tree.root, cwd), 'package.json'), + (json) => { + if (json['exports']) { + json['exports']['./plugin'] = './plugin.js'; + } + return json; + } + ); + await formatFiles(tree); }