Skip to content

Commit

Permalink
Updated blueprints to install eslint@v9 (#146)
Browse files Browse the repository at this point in the history
* chore: Updated dependencies

* chore: Updated eslint to v9

* chore: Updated fixtures

* chore: Added changeset

---------

Co-authored-by: ijlee2 <ijlee2@users.noreply.github.com>
  • Loading branch information
ijlee2 and ijlee2 authored Feb 4, 2025
1 parent d0ec787 commit bcade45
Show file tree
Hide file tree
Showing 27 changed files with 808 additions and 477 deletions.
5 changes: 5 additions & 0 deletions .changeset/rude-carrots-tie.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@codemod-utils/cli": minor
---

Updated blueprints to install eslint@v9
13 changes: 0 additions & 13 deletions packages/cli/src/blueprints/.eslintignore

This file was deleted.

109 changes: 0 additions & 109 deletions packages/cli/src/blueprints/.eslintrc.cjs

This file was deleted.

5 changes: 2 additions & 3 deletions packages/cli/src/blueprints/__npmignore__
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@
/.DS_Store
/.env*
/.eslintcache
/.eslintignore
/.eslintrc.cjs
/.git/
/.github/
/.gitignore
Expand All @@ -19,5 +17,6 @@
/.prettierrc.cjs
/build.sh
/CONTRIBUTING.md
/update-test-fixtures.sh
/eslint.config.js
/tests/
/update-test-fixtures.sh
236 changes: 236 additions & 0 deletions packages/cli/src/blueprints/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,236 @@
<% if (options.codemod.hasTypeScript) { %>import babelEslintParser from '@babel/eslint-parser';
import eslint from '@eslint/js';
import eslintPluginImport from 'eslint-plugin-import';
import eslintPluginN from 'eslint-plugin-n';
import eslintPluginPrettier from 'eslint-plugin-prettier/recommended';
import eslintPluginSimpleImportSort from 'eslint-plugin-simple-import-sort';
import eslintPluginTypescriptSortKeys from 'eslint-plugin-typescript-sort-keys';
import globals from 'globals';
// eslint-disable-next-line import/no-unresolved
import tseslint from 'typescript-eslint';

const parserOptionsJs = {
babelOptions: {
plugins: [
[
'@babel/plugin-proposal-decorators',
{
decoratorsBeforeExport: true,
},
],
],
},
ecmaFeatures: {
modules: true,
},
ecmaVersion: 'latest',
requireConfigFile: false,
};

const parserOptionsTs = {
projectService: true,
tsconfigRootDir: import.meta.dirname,
};

export default tseslint.config(
{
ignores: [
'dist/',
'dist-for-testing/',
'node_modules/',
'src/blueprints/',
'tests/fixtures/',
'tmp/',
'!.*',
'.*/',
],
},

{
linterOptions: {
reportUnusedDisableDirectives: 'error',
},
},
{
plugins: {
'simple-import-sort': eslintPluginSimpleImportSort,
},
rules: {
curly: 'error',
'simple-import-sort/imports': 'error',
'simple-import-sort/exports': 'error',
},
},
eslint.configs.recommended,
eslintPluginImport.flatConfigs.recommended,
eslintPluginPrettier,

// JavaScript files
{
files: ['**/*.js'],
languageOptions: {
parser: babelEslintParser,
parserOptions: parserOptionsJs,
},
rules: {
'import/no-duplicates': 'error',
},
},

// TypeScript files
{
extends: [
...tseslint.configs.recommended,
eslintPluginImport.flatConfigs.typescript,
],
files: ['**/*.ts'],
languageOptions: {
parserOptions: parserOptionsTs,
},
plugins: {
'typescript-sort-keys': eslintPluginTypescriptSortKeys,
},
rules: {
'@typescript-eslint/array-type': 'error',
'@typescript-eslint/consistent-type-imports': 'error',
'@typescript-eslint/no-import-type-side-effects': 'error',
'import/no-duplicates': 'error',
'typescript-sort-keys/interface': 'error',
'typescript-sort-keys/string-enum': 'error',
},
settings: {
'import/resolver': {
node: true,
typescript: true,
},
},
},

// Node files
{
files: ['**/*.cjs'],
languageOptions: {
ecmaVersion: 'latest',
globals: {
...globals.node,
},
sourceType: 'script',
},
plugins: {
n: eslintPluginN,
},
},
{
files: ['**/*.mjs'],
languageOptions: {
ecmaVersion: 'latest',
globals: {
...globals.node,
},
parserOptions: parserOptionsJs,
sourceType: 'module',
},
plugins: {
n: eslintPluginN,
},
},
);<% } else { %>import babelEslintParser from '@babel/eslint-parser';
import eslint from '@eslint/js';
import eslintPluginImport from 'eslint-plugin-import';
import eslintPluginN from 'eslint-plugin-n';
import eslintPluginPrettier from 'eslint-plugin-prettier/recommended';
import eslintPluginSimpleImportSort from 'eslint-plugin-simple-import-sort';
import globals from 'globals';

const parserOptionsJs = {
babelOptions: {
plugins: [
[
'@babel/plugin-proposal-decorators',
{
decoratorsBeforeExport: true,
},
],
],
},
ecmaFeatures: {
modules: true,
},
ecmaVersion: 'latest',
requireConfigFile: false,
};

export default tseslint.config(
{
ignores: [
'dist/',
'dist-for-testing/',
'node_modules/',
'src/blueprints/',
'tests/fixtures/',
'tmp/',
'!.*',
'.*/',
],
},

{
linterOptions: {
reportUnusedDisableDirectives: 'error',
},
},
{
plugins: {
'simple-import-sort': eslintPluginSimpleImportSort,
},
rules: {
curly: 'error',
'simple-import-sort/imports': 'error',
'simple-import-sort/exports': 'error',
},
},
eslint.configs.recommended,
eslintPluginImport.flatConfigs.recommended,
eslintPluginPrettier,

// JavaScript files
{
files: ['**/*.js'],
languageOptions: {
parser: babelEslintParser,
parserOptions: parserOptionsJs,
},
rules: {
'import/no-duplicates': 'error',
},
},

// Node files
{
files: ['**/*.cjs'],
languageOptions: {
ecmaVersion: 'latest',
globals: {
...globals.node,
},
sourceType: 'script',
},
plugins: {
n: eslintPluginN,
},
},
{
files: ['**/*.mjs'],
languageOptions: {
ecmaVersion: 'latest',
globals: {
...globals.node,
},
parserOptions: parserOptionsJs,
sourceType: 'module',
},
plugins: {
n: eslintPluginN,
},
},
);<% } %>
Loading

0 comments on commit bcade45

Please sign in to comment.