fix(devkit): always read package version from the actual package in e… (#14623)
This commit is contained in:
parent
f3376419ac
commit
243b7423f6
@ -342,20 +342,6 @@ describe('ensurePackage', () => {
|
|||||||
tree = createTree();
|
tree = createTree();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should return without error when dependency is satisfied', async () => {
|
|
||||||
writeJson(tree, 'package.json', {
|
|
||||||
devDependencies: {
|
|
||||||
'@nrwl/vite': '15.0.0',
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
await expect(
|
|
||||||
ensurePackage(tree, '@nrwl/vite', '>=15.0.0', {
|
|
||||||
throwOnMissing: true,
|
|
||||||
})
|
|
||||||
).resolves.toBeUndefined();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should throw when dependencies are missing', async () => {
|
it('should throw when dependencies are missing', async () => {
|
||||||
writeJson(tree, 'package.json', {});
|
writeJson(tree, 'package.json', {});
|
||||||
|
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import { GeneratorCallback } from 'nx/src/config/misc-interfaces';
|
|||||||
import { clean, coerce, gt, satisfies } from 'semver';
|
import { clean, coerce, gt, satisfies } from 'semver';
|
||||||
import { getPackageManagerCommand } from 'nx/src/utils/package-manager';
|
import { getPackageManagerCommand } from 'nx/src/utils/package-manager';
|
||||||
import { execSync } from 'child_process';
|
import { execSync } from 'child_process';
|
||||||
|
import { readModulePackageJson } from 'nx/src/utils/package-json';
|
||||||
|
|
||||||
const NON_SEMVER_TAGS = {
|
const NON_SEMVER_TAGS = {
|
||||||
'*': 2,
|
'*': 2,
|
||||||
@ -346,21 +347,22 @@ export async function ensurePackage(
|
|||||||
let version: string;
|
let version: string;
|
||||||
|
|
||||||
// Read package and version from root package.json file.
|
// Read package and version from root package.json file.
|
||||||
const packageJson = readJson(tree, 'package.json');
|
|
||||||
const dev = options.dev ?? true;
|
const dev = options.dev ?? true;
|
||||||
const throwOnMissing = options.throwOnMissing ?? !!process.env.NX_DRY_RUN; // NX_DRY_RUN is set in `packages/nx/src/command-line/generate.ts`
|
const throwOnMissing = options.throwOnMissing ?? !!process.env.NX_DRY_RUN; // NX_DRY_RUN is set in `packages/nx/src/command-line/generate.ts`
|
||||||
const pmc = getPackageManagerCommand();
|
const pmc = getPackageManagerCommand();
|
||||||
const field = dev ? 'devDependencies' : 'dependencies';
|
|
||||||
|
|
||||||
version = packageJson[field]?.[pkg];
|
// Try to resolve the actual version from resolved module.
|
||||||
|
try {
|
||||||
|
version = readModulePackageJson(pkg).packageJson.version;
|
||||||
|
} catch {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
|
||||||
// If package not found, try to resolve it using Node and get its version.
|
// Otherwise try to read in from package.json. This is needed for E2E tests to pass.
|
||||||
if (!version) {
|
if (!version) {
|
||||||
try {
|
const packageJson = readJson(tree, 'package.json');
|
||||||
version = require(`${pkg}/package.json`).version;
|
const field = dev ? 'devDependencies' : 'dependencies';
|
||||||
} catch {
|
version = packageJson[field]?.[pkg];
|
||||||
// ignore
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!satisfies(version, requiredVersion)) {
|
if (!satisfies(version, requiredVersion)) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user