@nx/eslint 20.0.7 → 20.1.0-beta.0
Sign up to get free protection for your applications and to get access to all the features.
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@nx/eslint",
|
3
|
-
"version": "20.0.
|
3
|
+
"version": "20.1.0-beta.0",
|
4
4
|
"private": false,
|
5
5
|
"description": "The ESLint plugin for Nx contains executors, generators and utilities used for linting JavaScript/TypeScript projects within an Nx workspace.",
|
6
6
|
"repository": {
|
@@ -35,8 +35,8 @@
|
|
35
35
|
"eslint": "^8.0.0 || ^9.0.0"
|
36
36
|
},
|
37
37
|
"dependencies": {
|
38
|
-
"@nx/devkit": "20.0.
|
39
|
-
"@nx/js": "20.0.
|
38
|
+
"@nx/devkit": "20.1.0-beta.0",
|
39
|
+
"@nx/js": "20.1.0-beta.0",
|
40
40
|
"semver": "^7.5.3",
|
41
41
|
"tslib": "^2.3.0",
|
42
42
|
"typescript": "~5.4.2"
|
@@ -1,6 +1,7 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.resolveAndInstantiateESLint = resolveAndInstantiateESLint;
|
4
|
+
const semver_1 = require("semver");
|
4
5
|
const config_file_1 = require("../../../utils/config-file");
|
5
6
|
const resolve_eslint_class_1 = require("../../../utils/resolve-eslint-class");
|
6
7
|
async function resolveAndInstantiateESLint(eslintConfigPath, options, useFlatConfig = false) {
|
@@ -12,6 +13,7 @@ async function resolveAndInstantiateESLint(eslintConfigPath, options, useFlatCon
|
|
12
13
|
const ESLint = await (0, resolve_eslint_class_1.resolveESLintClass)({
|
13
14
|
useFlatConfigOverrideVal: useFlatConfig,
|
14
15
|
});
|
16
|
+
// ruleFilter exist only in eslint 9+, remove this type when eslint 8 support dropped
|
15
17
|
const eslintOptions = {
|
16
18
|
overrideConfigFile: eslintConfigPath,
|
17
19
|
fix: !!options.fix,
|
@@ -57,6 +59,10 @@ async function resolveAndInstantiateESLint(eslintConfigPath, options, useFlatCon
|
|
57
59
|
eslintOptions.reportUnusedDisableDirectives =
|
58
60
|
options.reportUnusedDisableDirectives || undefined;
|
59
61
|
}
|
62
|
+
// pass --quiet to eslint 9+ directly: filter only errors
|
63
|
+
if (options.quiet && (0, semver_1.gte)(ESLint.version, '9.0.0')) {
|
64
|
+
eslintOptions.ruleFilter = (rule) => rule.severity === 2;
|
65
|
+
}
|
60
66
|
const eslint = new ESLint(eslintOptions);
|
61
67
|
return {
|
62
68
|
ESLint,
|
@@ -71,8 +71,7 @@ function migrateConfigToMonorepoStyle(projects, tree, unitTestRunner, keepExisti
|
|
71
71
|
}
|
72
72
|
function findLintTarget(project) {
|
73
73
|
return Object.values(project.targets ?? {}).find((target) => target.executor === '@nx/eslint:lint' ||
|
74
|
-
target.executor === '@nx/linter:eslint'
|
75
|
-
target.executor === '@nrwl/linter:eslint');
|
74
|
+
target.executor === '@nx/linter:eslint');
|
76
75
|
}
|
77
76
|
function migrateEslintFile(projectEslintPath, tree) {
|
78
77
|
const baseFile = (0, eslint_file_1.findEslintFile)(tree);
|
@@ -88,8 +87,6 @@ function migrateEslintFile(projectEslintPath, tree) {
|
|
88
87
|
config = (0, ast_utils_1.removeCompatExtends)(config, [
|
89
88
|
'plugin:@nx/typescript',
|
90
89
|
'plugin:@nx/javascript',
|
91
|
-
'plugin:@nrwl/typescript',
|
92
|
-
'plugin:@nrwl/javascript',
|
93
90
|
]);
|
94
91
|
config = (0, ast_utils_1.removePredefinedConfigs)(config, '@nx/eslint-plugin', 'nx', [
|
95
92
|
'flat/base',
|
@@ -104,7 +101,7 @@ function migrateEslintFile(projectEslintPath, tree) {
|
|
104
101
|
delete json.root;
|
105
102
|
// remove nrwl/nx plugins
|
106
103
|
if (json.plugins) {
|
107
|
-
json.plugins = json.plugins.filter((p) => p !== '@nx'
|
104
|
+
json.plugins = json.plugins.filter((p) => p !== '@nx');
|
108
105
|
if (json.plugins.length === 0) {
|
109
106
|
delete json.plugins;
|
110
107
|
}
|
@@ -124,9 +121,7 @@ function migrateEslintFile(projectEslintPath, tree) {
|
|
124
121
|
json.overrides.forEach((override) => {
|
125
122
|
if (override.extends) {
|
126
123
|
override.extends = override.extends.filter((ext) => ext !== 'plugin:@nx/typescript' &&
|
127
|
-
ext !== 'plugin:@
|
128
|
-
ext !== 'plugin:@nx/javascript' &&
|
129
|
-
ext !== 'plugin:@nrwl/nx/javascript');
|
124
|
+
ext !== 'plugin:@nx/javascript');
|
130
125
|
if (override.extends.length === 0) {
|
131
126
|
delete override.extends;
|
132
127
|
}
|
@@ -224,7 +224,7 @@ function isMigrationToMonorepoNeeded(tree, graph) {
|
|
224
224
|
return false;
|
225
225
|
}
|
226
226
|
for (const targetConfig of Object.values(rootProject.data.targets ?? {})) {
|
227
|
-
if (['@nx/eslint:lint', '@
|
227
|
+
if (['@nx/eslint:lint', '@nx/linter:eslint'].includes(targetConfig.executor) ||
|
228
228
|
(targetConfig.executor === 'nx:run-commands' &&
|
229
229
|
targetConfig.options?.command &&
|
230
230
|
targetConfig.options?.command.startsWith('eslint '))) {
|
@@ -729,14 +729,14 @@ function addTSObjectProperty(elements, key, value) {
|
|
729
729
|
*/
|
730
730
|
function generateAst(input, propertyAssignmentReplacer) {
|
731
731
|
if (Array.isArray(input)) {
|
732
|
-
return ts.factory.createArrayLiteralExpression(input.map((item) => generateAst(item, propertyAssignmentReplacer)),
|
732
|
+
return ts.factory.createArrayLiteralExpression(input.map((item) => generateAst(item, propertyAssignmentReplacer)), true // Always treat as multiline, using item.length does not work in all cases
|
733
733
|
);
|
734
734
|
}
|
735
735
|
if (input === null) {
|
736
736
|
return ts.factory.createNull();
|
737
737
|
}
|
738
738
|
if (typeof input === 'object') {
|
739
|
-
return ts.factory.createObjectLiteralExpression(generatePropertyAssignmentsFromObjectEntries(input, propertyAssignmentReplacer), Object.keys(input).length > 1
|
739
|
+
return ts.factory.createObjectLiteralExpression(generatePropertyAssignmentsFromObjectEntries(input, propertyAssignmentReplacer), true // Always treat as multiline, using Object.keys(input).length > 1 does not work in all cases
|
740
740
|
);
|
741
741
|
}
|
742
742
|
if (typeof input === 'string') {
|