eslint-config-codfish

ESList configuration I use in personal and work projects. Airbnb w/ prettier, supports react & non-react, docker & dApps.

MIT License

Downloads
1.5K
Stars
3
Committers
3

eslint-config-codfish

Opinionated ESLint configuration that extends airbnb to not conflict with prettier.

Features

  • Uses Airbnb's config as the
    foundation.
  • Leverages prettier's eslint plugin, which
    run's prettier within ESLint, and overrides ESLint/Airbnb rules that may conflict with Prettier.
  • Supports both React & non-React applications dynamically based on your project's dependencies.
  • Supports linting TypeScript (.ts and .tsx files) dynamically based on your project's
    dependencies.
  • Extends
    Kent C Dodd's Jest config
    dynamically based on your project's dependencies.
  • Enforces js instead of jsx files.
  • Turns off import/no-unresolved errors for node modules in projects using Docker, to avoid false
    positives.
  • Helpful opt-in config for dApp's.

Usage

Install by running:

npx install-peerdeps eslint-config-codfish

My preferred setup includes tools like husky, lint-staged & commitlint in addition to prettier & eslint. However that's optional.

Then add the extends to your .eslintrc:

module.exports = {
  extends: ['codfish'],
  rules: {
    // your overrides here
  },
};

Optionally add a .prettierrc.js configuration file:

module.exports = {
  printWidth: 100,
  tabWidth: 2,
  useTabs: false,
  semi: true,
  singleQuote: true,
  trailingComma: 'all',
  bracketSpacing: true,
  jsxBracketSameLine: false,
  proseWrap: 'always',
};

With dApps

Similar to the issues with docker, there may be rules you want to adjust for dApp's. This config will set some globals as well as ignore missing build artifact imports. While you obviously need those to run your app, sometimes you might want to run the linter in a ci/cd environment and build artifacts might not be present.

Note: The dApp config also includes the import/no-unresolved rule found in the docker config.

module.exports = {
  extends: ['codfish', 'codfish/dapp'],
  rules: {
    // your overrides here
  },
};