feat(repo): add exports to package.json of package (#20090)

This commit is contained in:
Katerina Skroumpelou 2023-11-07 17:18:02 +02:00 committed by GitHub
parent b3423679c0
commit 7416b9c4a7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 125 additions and 3 deletions

View File

@ -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,

View File

@ -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();
});
});

View File

@ -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);
}