fix(nx-plugin): tslib is not set as a dependency when using create-package generator (#22429)

<!-- Please make sure you have read the submission guidelines before
posting an PR -->
<!--
https://github.com/nrwl/nx/blob/master/CONTRIBUTING.md#-submitting-a-pr
-->

<!-- Please make sure that your commit message follows our format -->
<!-- Example: `fix(nx): must begin with lowercase` -->

## Current Behavior
The linting failed on clean `create-nx-plugin` generation:

![image](https://github.com/nrwl/nx/assets/954509/80bfbaeb-0994-48d9-a6dc-20f8f723a95d)

## Expected Behavior
After a clean generation, build, test, and lint should be successful

Co-authored-by: Emily Xiong <xiongemi@gmail.com>
This commit is contained in:
Jonathan Gelin 2024-07-05 21:29:48 +02:00 committed by GitHub
parent 62baf4f307
commit 23ce6af2cc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 26 additions and 0 deletions

View File

@ -13,6 +13,8 @@ import pluginGenerator from '../plugin/plugin';
import { createPackageGenerator } from './create-package'; import { createPackageGenerator } from './create-package';
import { CreatePackageSchema } from './schema'; import { CreatePackageSchema } from './schema';
import { setCwd } from '@nx/devkit/internal-testing-utils'; import { setCwd } from '@nx/devkit/internal-testing-utils';
import { tsLibVersion } from '@nx/js/src/utils/versions';
import { nxVersion } from 'nx/src/utils/versions';
const getSchema: ( const getSchema: (
overrides?: Partial<CreatePackageSchema> overrides?: Partial<CreatePackageSchema>
@ -128,4 +130,21 @@ describe('NxPlugin Create Package Generator', () => {
expect(name).toEqual('create-a-workspace'); expect(name).toEqual('create-a-workspace');
}); });
it("should have valid default package.json's dependencies", async () => {
await createPackageGenerator(tree, getSchema());
const { root } = readProjectConfiguration(tree, 'create-a-workspace');
const { dependencies } = readJson<PackageJson>(
tree,
joinPathFragments(root, 'package.json')
);
expect(dependencies).toEqual(
expect.objectContaining({
'create-nx-workspace': nxVersion,
tslib: tsLibVersion,
})
);
});
}); });

View File

@ -13,12 +13,14 @@ import {
updateProjectConfiguration, updateProjectConfiguration,
} from '@nx/devkit'; } from '@nx/devkit';
import { libraryGenerator as jsLibraryGenerator } from '@nx/js'; import { libraryGenerator as jsLibraryGenerator } from '@nx/js';
import { addTsLibDependencies } from '@nx/js/src/utils/typescript/add-tslib-dependencies';
import { nxVersion } from 'nx/src/utils/versions'; import { nxVersion } from 'nx/src/utils/versions';
import generatorGenerator from '../generator/generator'; import generatorGenerator from '../generator/generator';
import { CreatePackageSchema } from './schema'; import { CreatePackageSchema } from './schema';
import { NormalizedSchema, normalizeSchema } from './utils/normalize-schema'; import { NormalizedSchema, normalizeSchema } from './utils/normalize-schema';
import { hasGenerator } from '../../utils/has-generator'; import { hasGenerator } from '../../utils/has-generator';
import { join } from 'path'; import { join } from 'path';
import { tsLibVersion } from '@nx/js/src/utils/versions';
export async function createPackageGenerator( export async function createPackageGenerator(
host: Tree, host: Tree,
@ -39,6 +41,10 @@ export async function createPackageGeneratorInternal(
const options = await normalizeSchema(host, schema); const options = await normalizeSchema(host, schema);
const pluginPackageName = await addPresetGenerator(host, options); const pluginPackageName = await addPresetGenerator(host, options);
if (options.bundler === 'tsc') {
tasks.push(addTsLibDependencies(host));
}
const installTask = addDependenciesToPackageJson( const installTask = addDependenciesToPackageJson(
host, host,
{ {
@ -112,6 +118,7 @@ async function createCliPackage(
}; };
packageJson.dependencies = { packageJson.dependencies = {
'create-nx-workspace': nxVersion, 'create-nx-workspace': nxVersion,
...(options.bundler === 'tsc' && { tslib: tsLibVersion }),
}; };
return packageJson; return packageJson;
} }