Skip to content

Commit 8a76db2

Browse files
committed
add eslint/recommended exports
1 parent 3c69140 commit 8a76db2

File tree

6 files changed

+74
-13
lines changed

6 files changed

+74
-13
lines changed

generators/bootstrap/generator.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ export default class BootstrapGenerator extends BaseGenerator {
206206
if (!this.skipPrettier) {
207207
const ignoreErrors = this.options.ignoreErrors || this.upgradeCommand;
208208
prettierTransforms.push(
209-
createESLintTransform.call(this, { ignoreErrors, extensions: 'ts,js' }),
209+
createESLintTransform.call(this, { ignoreErrors, extensions: 'ts,js,cjs,mjs' }),
210210
createRemoveUnusedImportsTransform.call(this, { ignoreErrors }),
211211
await createPrettierTransform.call(this, {
212212
ignoreErrors,

generators/bootstrap/support/eslint-worker.js

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,19 @@
1-
import ESLint from 'eslint';
1+
import eslint from 'eslint';
22

3-
let eslint;
3+
import { baseRules } from '../../../lib/eslint/base.js';
4+
5+
let eslintInstance;
6+
7+
/* Flat config based eslint
8+
Blocked by https://github.com/import-js/eslint-plugin-import/issues/2556
9+
import eslint from 'eslint/use-at-your-own-risk';
10+
const { languageOptions, plugins: tseslintPlugins } = tseslint.configs.base;
11+
new eslint.FlatESLint({ fix: true, overrideConfigFile: true, cwd, plugins, baseConfig: { languageOptions, rules } });
12+
*/
413

514
export default async ({ resolvePluginsRelativeTo, filePath, fileContents }) => {
6-
if (!eslint) {
7-
eslint = new ESLint.ESLint({
15+
if (!eslintInstance) {
16+
eslintInstance = new eslint.ESLint({
817
fix: true,
918
// Disable destination configs. We should apply plugins and rules which jhipster depends on.
1019
useEslintrc: false,
@@ -16,21 +25,16 @@ export default async ({ resolvePluginsRelativeTo, filePath, fileContents }) => {
1625
sourceType: 'module',
1726
ecmaVersion: 'latest',
1827
},
19-
rules: {
20-
'import/order': 'error',
21-
'import/no-duplicates': 'error',
22-
'unused-imports/no-unused-imports': 'error',
23-
'unused-imports/no-unused-vars': ['warn', { vars: 'all', varsIgnorePattern: '^_', args: 'after-used', argsIgnorePattern: '^_' }],
24-
},
28+
rules: baseRules,
2529
},
2630
});
2731
}
2832

29-
if (await eslint.isPathIgnored(filePath)) {
33+
if (await eslintInstance.isPathIgnored(filePath)) {
3034
return { result: fileContents };
3135
}
3236
try {
33-
const [result] = await eslint.lintText(fileContents, { filePath });
37+
const [result] = await eslintInstance.lintText(fileContents, { filePath });
3438
return { result: result.output ?? fileContents };
3539
} catch (error) {
3640
return { error: `${error}` };

lib/eslint/base.js

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import unusedImports from 'eslint-plugin-unused-imports';
2+
import imports from 'eslint-plugin-import';
3+
4+
export const baseRules = {
5+
'no-unused-vars': 'off',
6+
'import/no-duplicates': 'error',
7+
'import/order': 'error',
8+
'unused-imports/no-unused-imports': 'error',
9+
'unused-imports/no-unused-vars': [
10+
'warn',
11+
{
12+
vars: 'all',
13+
varsIgnorePattern: '^_',
14+
args: 'after-used',
15+
argsIgnorePattern: '^_',
16+
},
17+
],
18+
};
19+
20+
const baseConfig = {
21+
languageOptions: {
22+
ecmaVersion: 2022,
23+
sourceType: 'module',
24+
},
25+
settings: {
26+
'import/parsers': {
27+
espree: ['.js', '.cjs', '.mjs', '.jsx'],
28+
},
29+
'import/resolver': {
30+
node: true,
31+
},
32+
},
33+
plugins: {
34+
'unused-imports': unusedImports,
35+
import: imports,
36+
},
37+
rules: baseRules,
38+
};
39+
40+
export default baseConfig;

lib/eslint/recommended.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import js from '@eslint/js';
2+
import baseConfig from './base.js';
3+
4+
const recommended = {
5+
...baseConfig,
6+
rules: {
7+
...js.configs.recommended.rules,
8+
...baseConfig.rules,
9+
},
10+
};
11+
12+
export default recommended;

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,10 @@
4545
"default": "./dist/cli/index.mjs"
4646
},
4747
"./package.json": "./package.json",
48+
"./eslint/recommended": {
49+
"types": "./dist/types/lib/eslint/recommended.d.ts",
50+
"default": "./dist/lib/eslint/recommended.js"
51+
},
4852
"./generators": {
4953
"types": "./dist/types/generators/generator-list.d.ts",
5054
"default": "./dist/generators/generator-list.js"

tsconfig.types.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"./cli",
44
"./jdl",
55
"./testing",
6+
"./lib/eslint/recommended.ts",
67
"./generators/index.ts",
78
"./generators/base",
89
"./generators/base-application",

0 commit comments

Comments
 (0)