Skip to content

Instantly share code, notes, and snippets.

@hanayashiki
Created August 9, 2022 12:58
Show Gist options
  • Save hanayashiki/10cfc5910db98b01e0fff4200860a0da to your computer and use it in GitHub Desktop.
Save hanayashiki/10cfc5910db98b01e0fff4200860a0da to your computer and use it in GitHub Desktop.
Setup eslint.md
pnpm install -D eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-plugin-prettier prettier eslint-plugin-import

.eslintrc.cjs

module.exports = {
  ignorePatterns: ['**/vendors/**'],
  plugins: ['import', '@typescript-eslint', 'prettier'],
  parser: '@typescript-eslint/parser',
  rules: {
    '@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
    'no-console': ['error', { allow: ['warn', 'error', 'info'] }],
    'import/order': [
      'error',
      {
        groups: ['builtin', 'external', 'internal'],
        pathGroups: [
          {
            pattern: '@(react|react-native)',
            group: 'external',
            position: 'before',
          },
        ],
        pathGroupsExcludedImportTypes: ['react'],
        'newlines-between': 'always',
        alphabetize: {
          order: 'asc',
          caseInsensitive: true,
        },
      },
    ],
    'prettier/prettier': 'error',
    'no-restricted-imports': [
      'error',
      '@material-ui/core',
      '@material-ui/icons',
      'lodash', // Use lodash-es instead
    ],
    // Importing the entire library leads to slow typescript typechecking!
    // Good: import Menu from '@material-ui/core/Menu';
    // Bad: import { Menu } from '@material-ui/core';
    // @see: https://v4.mui.com/zh/guides/minimizing-bundle-size/
  },
  parserOptions: {
    project: './tsconfig.json',
  },
};

.eslintignore

babel.config.js
.eslintrc.cjs
dist/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment