fix(linter): fix dep-checks projPackageJsonDeps caching for IDE (#18935)
This commit is contained in:
parent
af53c7cfb2
commit
2bc7031017
@ -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) {
|
||||||
|
|||||||
@ -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,15 +15,20 @@ 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 {
|
||||||
if (existsSync(path)) {
|
if (existsSync(path)) {
|
||||||
return readJsonFile(path);
|
return readJsonFile(path);
|
||||||
|
|||||||
@ -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,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user