fix(linter): fix dep-checks projPackageJsonDeps caching for IDE (#18935)

This commit is contained in:
Miroslav Jonaš 2023-09-06 10:19:50 +02:00 committed by GitHub
parent af53c7cfb2
commit 2bc7031017
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 26 additions and 23 deletions

View File

@ -148,11 +148,8 @@ export default createESLintRule<Options, MessageIds>({
'package.json'
);
globalThis.projPackageJsonDeps ??= getProductionDependencies(
getPackageJson(projPackageJsonPath)
);
const projPackageJsonDeps: Record<string, string> =
globalThis.projPackageJsonDeps;
getProductionDependencies(projPackageJsonPath);
const rootPackageJsonDeps = getAllDependencies(rootPackageJson);
function validateMissingDependencies(node: AST.JSONProperty) {

View File

@ -1,6 +1,7 @@
import { ProjectFileMap, readJsonFile } from '@nx/devkit';
import { readJsonFile } from '@nx/devkit';
import { existsSync } from 'fs';
import { PackageJson } from 'nx/src/utils/package-json';
import { isTerminalRun } from './runtime-lint-utils';
export function getAllDependencies(
packageJson: PackageJson
@ -14,15 +15,20 @@ export function getAllDependencies(
}
export function getProductionDependencies(
packageJson: PackageJson
packageJsonPath: string
): Record<string, string> {
return {
if (!globalThis.projPackageJsonDeps || !isTerminalRun()) {
const packageJson = getPackageJson(packageJsonPath);
globalThis.projPackageJsonDeps = {
...packageJson.dependencies,
...packageJson.peerDependencies,
...packageJson.optionalDependencies,
};
}
return globalThis.projPackageJsonDeps;
}
export function getPackageJson(path: string): PackageJson {
if (existsSync(path)) {
return readJsonFile(path);

View File

@ -19,13 +19,13 @@ export function ensureGlobalProjectGraph(ruleName: string) {
* Enforce every IDE change to get a fresh nxdeps.json
*/
if (
!(global as any).projectGraph ||
!(global as any).projectRootMappings ||
!(global as any).projectFileMap ||
!globalThis.projectGraph ||
!globalThis.projectRootMappings ||
!globalThis.projectFileMap ||
!isTerminalRun()
) {
const nxJson = readNxJson();
(global as any).workspaceLayout = nxJson.workspaceLayout;
globalThis.workspaceLayout = nxJson.workspaceLayout;
/**
* Because there are a number of ways in which the rule can be invoked (executor vs ESLint CLI vs IDE Plugin),
@ -33,12 +33,12 @@ export function ensureGlobalProjectGraph(ruleName: string) {
*/
try {
const projectGraph = readCachedProjectGraph();
(global as any).projectGraph = projectGraph;
(global as any).projectRootMappings = createProjectRootMappings(
globalThis.projectGraph = projectGraph;
globalThis.projectRootMappings = createProjectRootMappings(
projectGraph.nodes
);
(global as any).projectFileMap = readProjectFileMapCache().projectFileMap;
(global as any).targetProjectLocator = new TargetProjectLocator(
globalThis.projectFileMap = readProjectFileMapCache().projectFileMap;
globalThis.targetProjectLocator = new TargetProjectLocator(
projectGraph.nodes,
projectGraph.externalNodes
);
@ -61,9 +61,9 @@ export function readProjectGraph(ruleName: string): {
} {
ensureGlobalProjectGraph(ruleName);
return {
projectGraph: (global as any).projectGraph,
projectFileMap: (global as any).projectFileMap,
projectRootMappings: (global as any).projectRootMappings,
targetProjectLocator: (global as any).targetProjectLocator,
projectGraph: globalThis.projectGraph,
projectFileMap: globalThis.projectFileMap,
projectRootMappings: globalThis.projectRootMappings,
targetProjectLocator: globalThis.targetProjectLocator,
};
}