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' 'package.json'
); );
globalThis.projPackageJsonDeps ??= getProductionDependencies(
getPackageJson(projPackageJsonPath)
);
const projPackageJsonDeps: Record<string, string> = const projPackageJsonDeps: Record<string, string> =
globalThis.projPackageJsonDeps; getProductionDependencies(projPackageJsonPath);
const rootPackageJsonDeps = getAllDependencies(rootPackageJson); const rootPackageJsonDeps = getAllDependencies(rootPackageJson);
function validateMissingDependencies(node: AST.JSONProperty) { 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 { existsSync } from 'fs';
import { PackageJson } from 'nx/src/utils/package-json'; import { PackageJson } from 'nx/src/utils/package-json';
import { isTerminalRun } from './runtime-lint-utils';
export function getAllDependencies( export function getAllDependencies(
packageJson: PackageJson packageJson: PackageJson
@ -14,13 +15,18 @@ export function getAllDependencies(
} }
export function getProductionDependencies( export function getProductionDependencies(
packageJson: PackageJson packageJsonPath: string
): Record<string, string> { ): Record<string, string> {
return { if (!globalThis.projPackageJsonDeps || !isTerminalRun()) {
const packageJson = getPackageJson(packageJsonPath);
globalThis.projPackageJsonDeps = {
...packageJson.dependencies, ...packageJson.dependencies,
...packageJson.peerDependencies, ...packageJson.peerDependencies,
...packageJson.optionalDependencies, ...packageJson.optionalDependencies,
}; };
}
return globalThis.projPackageJsonDeps;
} }
export function getPackageJson(path: string): PackageJson { export function getPackageJson(path: string): PackageJson {

View File

@ -19,13 +19,13 @@ export function ensureGlobalProjectGraph(ruleName: string) {
* Enforce every IDE change to get a fresh nxdeps.json * Enforce every IDE change to get a fresh nxdeps.json
*/ */
if ( if (
!(global as any).projectGraph || !globalThis.projectGraph ||
!(global as any).projectRootMappings || !globalThis.projectRootMappings ||
!(global as any).projectFileMap || !globalThis.projectFileMap ||
!isTerminalRun() !isTerminalRun()
) { ) {
const nxJson = readNxJson(); 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), * 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 { try {
const projectGraph = readCachedProjectGraph(); const projectGraph = readCachedProjectGraph();
(global as any).projectGraph = projectGraph; globalThis.projectGraph = projectGraph;
(global as any).projectRootMappings = createProjectRootMappings( globalThis.projectRootMappings = createProjectRootMappings(
projectGraph.nodes projectGraph.nodes
); );
(global as any).projectFileMap = readProjectFileMapCache().projectFileMap; globalThis.projectFileMap = readProjectFileMapCache().projectFileMap;
(global as any).targetProjectLocator = new TargetProjectLocator( globalThis.targetProjectLocator = new TargetProjectLocator(
projectGraph.nodes, projectGraph.nodes,
projectGraph.externalNodes projectGraph.externalNodes
); );
@ -61,9 +61,9 @@ export function readProjectGraph(ruleName: string): {
} { } {
ensureGlobalProjectGraph(ruleName); ensureGlobalProjectGraph(ruleName);
return { return {
projectGraph: (global as any).projectGraph, projectGraph: globalThis.projectGraph,
projectFileMap: (global as any).projectFileMap, projectFileMap: globalThis.projectFileMap,
projectRootMappings: (global as any).projectRootMappings, projectRootMappings: globalThis.projectRootMappings,
targetProjectLocator: (global as any).targetProjectLocator, targetProjectLocator: globalThis.targetProjectLocator,
}; };
} }