Skip to content

Commit

Permalink
add eslint/recommended exports
Browse files Browse the repository at this point in the history
  • Loading branch information
mshima committed Jun 19, 2024
1 parent 3c69140 commit 6af019e
Show file tree
Hide file tree
Showing 6 changed files with 74 additions and 13 deletions.
2 changes: 1 addition & 1 deletion generators/bootstrap/generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@ export default class BootstrapGenerator extends BaseGenerator {
if (!this.skipPrettier) {
const ignoreErrors = this.options.ignoreErrors || this.upgradeCommand;
prettierTransforms.push(
createESLintTransform.call(this, { ignoreErrors, extensions: 'ts,js' }),
createESLintTransform.call(this, { ignoreErrors, extensions: 'ts,js,cjs,mjs' }),
createRemoveUnusedImportsTransform.call(this, { ignoreErrors }),
await createPrettierTransform.call(this, {
ignoreErrors,
Expand Down
28 changes: 16 additions & 12 deletions generators/bootstrap/support/eslint-worker.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,19 @@
import ESLint from 'eslint';
import eslint from 'eslint';

let eslint;
import { baseRules } from '../../../lib/eslint/base.js';

let eslintInstance;

/* Flat config based eslint
Blocked by https://github.com/import-js/eslint-plugin-import/issues/2556
import eslint from 'eslint/use-at-your-own-risk';
const { languageOptions, plugins: tseslintPlugins } = tseslint.configs.base;
new eslint.FlatESLint({ fix: true, overrideConfigFile: true, cwd, plugins, baseConfig: { languageOptions, rules } });
*/

export default async ({ resolvePluginsRelativeTo, filePath, fileContents }) => {
if (!eslint) {
eslint = new ESLint.ESLint({
if (!eslintInstance) {
eslintInstance = new eslint.ESLint({
fix: true,
// Disable destination configs. We should apply plugins and rules which jhipster depends on.
useEslintrc: false,
Expand All @@ -16,21 +25,16 @@ export default async ({ resolvePluginsRelativeTo, filePath, fileContents }) => {
sourceType: 'module',
ecmaVersion: 'latest',
},
rules: {
'import/order': 'error',
'import/no-duplicates': 'error',
'unused-imports/no-unused-imports': 'error',
'unused-imports/no-unused-vars': ['warn', { vars: 'all', varsIgnorePattern: '^_', args: 'after-used', argsIgnorePattern: '^_' }],
},
rules: baseRules,
},
});
}

if (await eslint.isPathIgnored(filePath)) {
if (await eslintInstance.isPathIgnored(filePath)) {
return { result: fileContents };
}
try {
const [result] = await eslint.lintText(fileContents, { filePath });
const [result] = await eslintInstance.lintText(fileContents, { filePath });
return { result: result.output ?? fileContents };
} catch (error) {
return { error: `${error}` };
Expand Down
28 changes: 28 additions & 0 deletions lib/eslint/base.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import unusedImports from 'eslint-plugin-unused-imports';
import imports from 'eslint-plugin-import';

export const baseRules = {
'no-unused-vars': 'off',
'import/no-duplicates': 'error',
'import/order': 'error',
'unused-imports/no-unused-imports': 'error',
'unused-imports/no-unused-vars': [
'warn',
{
vars: 'all',
varsIgnorePattern: '^_',
args: 'after-used',
argsIgnorePattern: '^_',
},
],
};

const baseConfig = {
plugins: {
'unused-imports': unusedImports,
import: imports,
},
rules: baseRules,
};

export default baseConfig;
24 changes: 24 additions & 0 deletions lib/eslint/recommended.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import js from '@eslint/js';
import baseConfig from './base.js';

const recommended = {
languageOptions: {
ecmaVersion: 2022,
sourceType: 'module',
},
settings: {
'import/parsers': {
espree: ['.js', '.cjs', '.mjs', '.jsx'],
},
'import/resolver': {
node: true,
},
},
...baseConfig,
rules: {
...js.configs.recommended.rules,
...baseConfig.rules,
},
};

export default recommended;
4 changes: 4 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@
"default": "./dist/cli/index.mjs"
},
"./package.json": "./package.json",
"./eslint/recommended": {
"types": "./dist/types/lib/eslint/recommended.d.ts",
"default": "./dist/lib/eslint/recommended.js"
},
"./generators": {
"types": "./dist/types/generators/generator-list.d.ts",
"default": "./dist/generators/generator-list.js"
Expand Down
1 change: 1 addition & 0 deletions tsconfig.types.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"./cli",
"./jdl",
"./testing",
"./lib/eslint/recommended.ts",
"./generators/index.ts",
"./generators/base",
"./generators/base-application",
Expand Down

0 comments on commit 6af019e

Please sign in to comment.