diff --git a/.eslintrc.js b/.eslintrc.js index a319906b..d8081e99 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -8,8 +8,8 @@ module.exports = { 'eslint:recommended', 'plugin:@eslint-community/eslint-comments/recommended', 'plugin:@typescript-eslint/recommended', - // 'plugin:import/recommended', - // 'plugin:import/typescript', + 'plugin:import/recommended', + 'plugin:import/typescript', // 'plugin:promise/recommended', // 'plugin:security/recommended-legacy', 'plugin:react/recommended', @@ -21,7 +21,7 @@ module.exports = { }, plugins: [ '@typescript-eslint', - // 'import', + 'import', // 'promise', // 'security', // 'no-catch-all', @@ -58,67 +58,71 @@ module.exports = { // Optional eslint-comments rule '@eslint-community/eslint-comments/no-unused-disable': 'error', '@eslint-community/eslint-comments/disable-enable-pair': ['error', { allowWholeFile: true }], - // // import - // 'import/export': 'error', - // 'import/no-deprecated': 'error', - // 'import/no-empty-named-blocks': 'error', - // 'import/no-extraneous-dependencies': 'error', - // 'import/no-mutable-exports': 'error', - // 'import/no-unused-modules': 'error', - // 'import/no-named-as-default': 'error', - // 'import/no-named-as-default-member': 'error', - // 'import/no-amd': 'error', - // 'import/no-commonjs': 'error', - // 'import/no-import-module-exports': 'error', - // 'import/no-nodejs-modules': 'off', - // 'import/unambiguous': 'off', // not compatible with scriptless vue files - // 'import/default': 'error', - // 'import/named': 'error', - // 'import/namespace': 'error', - // 'import/no-absolute-path': 'error', - // 'import/no-cycle': 'error', - // 'import/no-dynamic-require': 'error', - // 'import/no-internal-modules': 'off', - // 'import/no-relative-packages': 'error', - // 'import/no-relative-parent-imports': [ - // 'error', - // { - // ignore: [ - // '#[src,root,components,pages,assets,layouts,queries,stores,plugins,context,types]/*', - // ], - // }, - // ], - // 'import/no-self-import': 'error', - // 'import/no-unresolved': 'error', - // 'import/no-useless-path-segments': 'error', - // 'import/no-webpack-loader-syntax': 'error', - // 'import/consiste@typescript-eslint - // { - // json: 'always', - // }, - // ], - // 'import/first': 'error', - // 'import/group-exports': 'off', - // 'import/newline-after-import': 'error', - // 'import/no-anonymous-default-export': 'off', // todo - consider to enable again - // 'import/no-default-export': 'off', // incompatible with vite & vike - // 'import/no-duplicates': 'error', - // 'import/no-named-default': 'error', - // 'import/no-namespace': 'error', - // 'import/no-unassigned-import': 'error', - // 'import/order': [ - // 'error', - // { - // groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'object', 'type'], - // 'newlines-between': 'always', - // alphabetize: { - // order: 'asc', // sort in ascending order. Options: ["ignore", "asc", "desc"] - // caseInsensitive: true, // ignore case. Options: [true, false] - // }, - // distinctGroup: true, - // }, - // ], - // 'import/prefer-default-export': 'off', + // import + 'import/export': 'error', + 'import/no-deprecated': 'error', + 'import/no-empty-named-blocks': 'error', + 'import/no-extraneous-dependencies': 'error', + 'import/no-mutable-exports': 'error', + 'import/no-unused-modules': 'error', + 'import/no-named-as-default': 'error', + 'import/no-named-as-default-member': 'error', + 'import/no-amd': 'error', + 'import/no-commonjs': 'error', + 'import/no-import-module-exports': 'error', + 'import/no-nodejs-modules': 'off', + 'import/unambiguous': 'off', // not compatible with scriptless vue files + 'import/default': 'error', + 'import/named': 'error', + 'import/namespace': 'error', + 'import/no-absolute-path': 'error', + 'import/no-cycle': 'error', + 'import/no-dynamic-require': 'error', + 'import/no-internal-modules': 'off', + 'import/no-relative-packages': 'error', + 'import/no-relative-parent-imports': [ + 'error', + { + ignore: [ + '#[src,root,components,pages,assets,layouts,queries,stores,plugins,context,types]/*', + ], + }, + ], + 'import/no-self-import': 'error', + 'import/no-unresolved': 'error', + 'import/no-useless-path-segments': 'error', + 'import/no-webpack-loader-syntax': 'error', + 'import/consistent-type-specifier-style': 'error', + 'import/exports-last': 'off', + 'import/extensions': [ + 'error', + 'never', + { + json: 'always', + }, + ], + 'import/first': 'error', + 'import/group-exports': 'off', + 'import/newline-after-import': 'error', + 'import/no-anonymous-default-export': 'off', // todo - consider to enable again + 'import/no-default-export': 'off', // incompatible with vite & vike + 'import/no-duplicates': 'error', + 'import/no-named-default': 'error', + 'import/no-namespace': 'error', + 'import/no-unassigned-import': 'error', + 'import/order': [ + 'error', + { + groups: ['builtin', 'external', 'internal', 'parent', 'sibling', 'index', 'object', 'type'], + 'newlines-between': 'always', + alphabetize: { + order: 'asc', // sort in ascending order. Options: ["ignore", "asc", "desc"] + caseInsensitive: true, // ignore case. Options: [true, false] + }, + distinctGroup: true, + }, + ], + 'import/prefer-default-export': 'off', // // promise // 'promise/catch-or-return': 'error', // 'promise/no-return-wrap': 'error',