Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

eslint-config-eloquence

crystal-ball227ISC23.1.0

Adaptive, robust, eloquent ESLint configuration

eloquent, eslint, eslintconfig, crystal-ball

readme

Eloquence


Package version NPM downloads Build status Known vulnerabilities :status      
Renovate Commitizen friendly ZenHub Semantic Release Contributor Covenant :integrations
Contains magic Full of love :flair       

Eloquence is a robust and adaptive ESLint configuration set for code linting code quality, style and formatting.

  • 🔋 Manages all ESLint dependencies for simple setup and version maintenance
  • 🧐 Intelligently adjusts error severity for style and formatting rules for development workflows
  • 😲 Smartly overrides configurations for Storybook, Cypress, webpack, MDX and Jest files.
  • ✅ React Testing Library and Jest DOM rules
  • 😍 Fully integrated with linting for Prettier formatting
  • 🌲 Includes Cypress tests specific ruleset
  • 👮‍♀️ Supports linting TypeScript projects
  • 📝 Supports linting MDX files

The most important opinion of Eloquence is that linters shouldn't get in your way while developing, so outside test environments all rules related to styling are downgraded to warnings and all formatting rules are silenced. See Rules for details.

⚙️ Setup

Install Dependencies

npm i eslint-config-eloquence prettier typescript -D

Prettier and [TypeScript][] are peer dependencies of Eloquence, they are not installed as dependencies to encourage each project installs them as an exact version project dependency to ensure all contributors are using the same version, and still allowing projects to update Prettier versions on their own schedule.

Configure ESLint

The minimum configuration is the target option:

// .eslintrc.js
'use strict'

module.exports = {
  // Extend either the React or Node base configs
  extends: ['eloquence/{react,node}'],
}
  • Extend 'eloquence/node' - for Node services and NPM packages
  • Extend 'eloquence/react' - for React applications bundled with webpack

ESM configs

Note all projects are configured for ESM. Node.js projects using CommonJS will need to override these rules:

// .eslintrc.js
'use strict'

module.exports = {
  extends: ['eloquence/node'],
  rules: {
    // CommonJS rule overrides
    'import/extensions': 'off',
    'import/no-useless-path-segments': 'off',
    '@typescript-eslint/no-var-requires': 'off',
  },
}

Ignore patterns config ignorePatterns

By default ignorePatterns is configured to ['!.*', 'public/*', 'dist/*'] which will ignore two common build output directories, and will force linting in dotfiles and directories beginning with dots (which are ignored by default by ESLint).

Note that code coverage output already has ignore configurations and shouldn't need addtiional configs.

Report unused disable directives

Any unnecessary eslint-disable directive will cause a warning (This helps with maintenance of linting overrides). This can be overridden by changing the reportUnusedDisableDirectives value:

'use strict'

module.exports = {
  extends: ['eloquence/node'],
  reportUnusedDisableDirectives: false,
}

Pretty print output

The eslint-formatter-pretty package is included in the dependencies and can be used to output pretty formatted results. The pretty printed results include hyperlinks to the rule docs and the files.

NODE_ENV=test npx eslint --format=pretty .

Pretty prints links

The recommended package.json command for linting runs on the entire directory, and uses the configuration ignorePatterns to ignore files or directories. By default node_modules and all dotfiles other than .eslintrc.js are ignored. The below config and command will lint all .js, .ts, and .tsx files in the repo, including dotfiles and directories starting with a dot, except for the public directory.

{
  "test:lint": "NODE_ENV=test eslint --format=pretty ."
}
'use strict'

const eloquence = require('eslint-config-eloquence')

module.exports = eloquence({
  target: 'react',
})

⚙️ Imports customizations

Repositories can configure custom rules to enforce some common requirements:

  • Restrict importing a specific module by setting a no-restricted-imports value. This can be useful for things like preventing React Router's Link component from being used instead of an application Link component.
  • Restrict where certain modules can be imported by setting an import/no-restricted-paths value. This can be useful for enforcing boundaries between modules, like separating Electron client code from main code, or for enforcing that an index file is used for a component library directory

👩‍🏫 Rules

The Eloquence ruleset balances providing a rigorous, comprehensive ruleset with providing only valuable linting messaging during non-test workflows. A comprehensive ruleset helps people contribute to projects by programatically answering questions about the code conventions expected by a project. However a comprehensive ruleset can also be really noisy and problematically irritating. To solve this issue Eloquence intelligently adjusts the linter error level for rule types by environment:

Error levels

Env Quality rules Style rules Formatting rules
Test error error error
Dev error warn off

This means linting related to code quality is always surfaced as a priority, but during development non critical feedback related to code style and formatting is moderated.

Linting philosophy

In general, the Eloquence ruleset tries to encourage these coding practices:

  • Readable, explicit code is always preferred over clever code.
  • Premature abstraction leads to more issues than duplicated code.
  • Whenever possible try to write simple code that can be read through without puzzle solving.

👮‍♀️ TypeScript

TypeScript rules are supported out of the box for React and Node configurations using an override. Projects using TS must provide a tsconfig in the project root.

Eloquence supports TS as a supertype for adding types only and forbids using TS enums.

VSCode

By default the ESLint extension for VSCode is only configured to lint JS language files and you need to add the TypeScript and TypeScript+React languages if you haven't.

{
  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "typescript",
    "typescriptreact"
  ]
}

📝 MDX

You can opt in to linting MDX files with the eslint-plugin-mdx package:

npm i eslint-plugin-mdx -DE
'use strict'

const eloquence = require('eslint-config-eloquence')

module.exports = eloquence({
  target: 'react',
  enableMDX: true,
})

File overrides

Eloquence overrides the base project rules and settings for specific file patterns to eliminate the need for ESLint configuration comments:

Files Updates
[src/**/*] Rules specific to source code
['*.ts', '*.tsx'] TypeScript rules enabled
['*.mdx'] MDX linting
['*.spec.js'] Adds Jest globals
['cypress/**/*'] Adds Cypress globals and rules
['.storybook/**/*'] Support ESmodules

Finally, configuration files for Storybook, Cypress, Babel, Jest, and webpack are all set to CommonJS modules with Node globals for configuring tooling executed by Node.js.

🔋 Batteries included

This package will automatically include all of the packages needed to run ESLint. Projects should allow this package to "own" the dependency management for packages related to ESLint. (When possible ensure that the only version of eslint included in a project is the versions specified by this package.)

Included dependencies:

😍 Contributing

This is an open source project that welcomes and appreciates contributions from everyone 🎉.
Please read the Code of Conduct and Contributing guides to get started.

Thank You!

  • The base ESLint rules for this project began with the Airbnb ESLint configuration and have evolved to the current rule definitions.

changelog

eslint-config-eloquence changelog

This project strictly adheres to semver and will err on the side of releasing majors when changes could possibly introduce breaking changes. This changelog is dynamically generated with Semantic Release configured with @crystal-ball/semantic-release-base.

Changelog tags

  • 💥 - Breaking change
  • 🔖 - Release notes
  • 💖 - New feature
  • ✨ - Updates
  • 🛠 - Fixes

22.2.0 (2023-10-12)

✨ Update

Chore

  • Update actions/checkout action to v4 (#385)(acb9a48), closes #385
  • Update devDependencies to v29 🆙 (#368)(f87af2f), closes #368
  • Update devDependencies 🆙 (#364)(fdbcf2d), closes #364
  • Update devDependencies 🆙 (#366)(61ee4b6), closes #366
  • Update devDependencies 🆙 (#367)(3b5822c), closes #367
  • Update devDependencies 🆙 (#371)(7070f3d), closes #371
  • Update devDependencies 🆙 (#372)(ed76cab), closes #372
  • Update devDependencies 🆙 (#374)(6092104), closes #374
  • Update devDependencies 🆙 (#375)(5978369), closes #375
  • Update devDependencies 🆙 (#377)(fca44f0), closes #377
  • Update devDependencies 🆙 (#378)(751b594), closes #378
  • Update devDependencies 🆙 (#379)(55368d4), closes #379
  • Update package @types/jest to v29.5.2 🆙 (#381)(a6e54b5), closes #381
  • Update package typescript to v5 🆙 (#380)(e7bc027), closes #380

22.1.0 (2022-06-18)

✨ Update

Chore

  • Update devDependencies 🆙 (#356)(dbee00e), closes #356
  • Update devDependencies 🆙 (#359)(6c7b03f), closes #359
  • Update github/codeql-action action to v2 (#358)(6f417a1), closes #358
  • Update package jest to v28 🆙 (#357)(0398e55), closes #357

22.0.2 (2022-04-09)

🛠 Fix

  • Turn off named exports rule in TS contexts (#355)(dc06d70), closes #355

22.0.1 (2022-04-09)

🛠 Fix

22.0.0 (2022-04-09)

💥 Breaking Changes!

  • Imports and props must be sorted.

💖 New

  • Version updates for dependencies and sorting rules 🆙(52ec6a7)

Chore

  • Update actions/cache action to v3 (#349)(d67dde3), closes #349
  • Update actions/checkout action to v3 (#350)(2bf8705), closes #350
  • Update actions/setup-node action to v3 (#347)(1019181), closes #347
  • Update devDependencies 🆙 (#342)(3713841), closes #342
  • Update devDependencies 🆙 (#345)(600e6c4), closes #345
  • Update devDependencies 🆙 (#346)(4103de7), closes #346
  • Update devDependencies 🆙 (#348)(2dde1be), closes #348

21.2.0 (2021-12-19)

✨ Update

  • TS and config file rule improvements 🤩 (#340)(1141d7d), closes #340

21.1.0 (2021-12-02)

✨ Update

Chore

  • Update package jest to v27.4.2 🆙 (#339)(afb0c33), closes #339

21.0.1 (2021-11-21)

🛠 Fix

  • React testing and typescript rule fixes (#338)(b128f2d), closes #338

Chore

  • Bump Node version support to 14 and 16 ⚙️ (#337)(e92310a), closes #337

21.0.0 (2021-11-21)

💥 Breaking Changes!

  • ESLint major version update

💖 New

20.0.2 (2021-11-21)

🛠 Fix

  • React import and override fixes 🎊 (#335)(c963c0f), closes #335

Chore

  • Update devDependencies 🆙 (#331)(46571cb), closes #331
  • Update devDependencies 🆙 (#332)(c30f78a), closes #332

20.0.1 (2021-09-25)

🛠 Fix

  • Ignore pattern matching ⚙️(e344169)

20.0.0 (2021-09-24)

💥 Breaking Changes!

  • Projects are assumed to be using ESModules and TS by default

💖 New

Chore

  • Update devDependencies 🆙 (#324)(c8bbb3b), closes #324
  • Update devDependencies 🆙 (#329)(8922f3f), closes #329
  • Update package @types/jest to v26.0.24 🆙 (#328)(9f48e18), closes #328
  • Update package @types/jest to v27 🆙 (#330)(25bc422), closes #330
  • Update package jest to v27 🆙 (#326)(28d34bb), closes #326
  • Update package jest to v27.0.6 🆙 (#327)(b171b53), closes #327

19.1.0 (2021-05-02)

✨ Update

Chore

  • Update devDependencies 🆙 (#319)(92e1508), closes #319

19.0.0 (2021-04-24)

💥 Breaking Changes!

  • Projects without a Babel config must pass parser: "default"

💖 New

  • Babel parser package update 💥 (#316)(7ae0f7c), closes #316

18.3.0 (2021-04-09)

✨ Update

Chore

  • Update package @crystal-ball/semantic-release-base to v2.30.0 🆙 (#314)(cb4cb00), closes #314

18.2.0 (2021-04-04)

✨ Update

  • Package dependencies 🆙 (#312)(edaeea8), closes #312

Chore

  • Update package @types/jest to v26.0.21 🆙 (#311)(31964bc), closes #311
  • Update package @types/jest to v26.0.22 🆙 (#313)(d992efb), closes #313

18.1.0 (2021-03-22)

✨ Update

  • Add ability to configure TS parser projects 🤩 (#310)(d3afaf5), closes #310

Chore, Docs

  • Lockfile maintenance ⚙️ (#308)(4b1aa2d), closes #308
  • Add new Jest plugins to README 📝 (#309)(517a55a), closes #309

18.0.0 (2021-03-21)

💥 Breaking Changes!

  • Jest tests are now more strictly linted, small updates likely needed

💖 New

  • Linting plugins for Jest 💖 (#307)(7b8a3ba), closes #307

17.8.0 (2021-03-20)

✨ Update

  • Dependencies to v4.18.0 🆙 (#306)(0b979c0), closes #306

17.7.0 (2021-03-13)

✨ Update

Chore

  • Fix semantic-release branch configuration ⚙️ (#304)(19d8e57), closes #304
  • Rename default branch to main 💖 (#303)(db8accf), closes #303

17.6.0 (2021-02-26)

✨ Update

  • Package dependencies 🆙(54ebda1)

Chore

  • Set repo configurations in files ⚙️ (#302)(e3fd010), closes #302
  • Update devDependencies 🆙 (#298)(6cff8f2), closes #298
  • Update package dependencies 🆙 (#301)(d711de4), closes #301

17.5.0 (2021-02-17)

✨ Update

  • Package dependencies 🆙 (#297)(002d9dd), closes #297

Chore

  • Update package @crystal-ball/semantic-release-base to v2.27.0 🆙 (#296)(a647fe3), closes #296

17.4.0 (2021-02-11)

✨ Update

  • Dependencies to v4.15.0 🆙 (#293)(098ef89), closes #293

Chore

  • Update devDependencies 🆙 (#292)(4a159a4), closes #292
  • Update package husky to v5 🆙 (#294)(e29c7b6), closes #294

17.3.0 (2021-02-05)

✨ Update

Chore, Upgrade

  • Update devDependencies 🆙 (#288)(d6b5016), closes #288
  • Update package husky to v4.3.8 🆙 (#289)(8d4416b), closes #289
  • Bump node-notifier from 8.0.0 to 8.0.1 (#285)(3aecc9c), closes #285

17.2.0 (2020-12-13)

✨ Update

  • Package dependencies 🆙 (#283)(c2f0ee3), closes #283

Chore, Upgrade

  • Update devDependencies 🆙 (#279)(2300731), closes #279
  • Bump ini from 1.3.5 to 1.3.7 (#282)(6722b3c), closes #282

17.1.0 (2020-12-06)

✨ Update

Chore

  • Update devDependencies 🆙 (#277)(cb532cb), closes #277

17.0.0 (2020-11-28)

💥 Breaking Changes!

  • TypeScript enums are no longer allowed

✨ Update

  • Forbid using TypeScript enums 💥 (#276)(e6a135e), closes #276

16.9.0 (2020-11-28)

✨ Update

Chore

  • Update package @crystal-ball/semantic-release-base to v2.24.0 🆙 (#274)(d6feb5a), closes #274

16.8.0 (2020-11-22)

✨ Update

  • Disable React prop rules in TS scope 🤩 (#273)(d979751), closes #273 #270

16.7.2 (2020-11-22)

🛠 Fix

  • Disabled rules getting enabled in development 🎊 (#272)(a9d0ac3), closes #272 #271

16.7.1 (2020-11-21)

🛠 Fix

  • Update testing-library version (#269)(5b10807), closes #269

Chore

  • Add caching to CI ⚙️ (#268)(3b108da), closes #268

16.7.0 (2020-11-21)

✨ Update

  • Package dependencies 🆙 (#267)(78a9027), closes #267

Chore

  • Update package jest to v26.6.1 🆙 (#263)(c7f948e), closes #263
  • Update package jest to v26.6.2 🆙 (#265)(18303fc), closes #265
  • Update package jest to v26.6.3 🆙 (#266)(387a4e4), closes #266

16.6.0 (2020-10-25)

✨ Update

Chore

  • Update devDependencies 🆙 (#260)(4da295e), closes #260

16.5.0 (2020-10-15)

✨ Update

  • Turn off React JSX checks for new Babel transform 🤩 (#258)(eb1a199), closes #258

16.4.0 (2020-10-15)

✨ Update

Chore

  • Update package jest to v26.5.2 🆙 (#256)(c1578af), closes #256
  • Update package jest to v26.5.3 🆙 (#257)(c42ef68), closes #257

16.3.1 (2020-09-28)

🛠 Fix

16.3.0 (2020-09-27)

✨ Update

16.2.0 (2020-09-27)

✨ Update

  • Include reportUnusedDisableDirectives by default ⚙️ (#252)(78976c8), closes #252

16.1.0 (2020-09-27)

✨ Update

  • Allow multiple stateless component definitions 🤩 (#251)(06a0494), closes #251

16.0.1 (2020-09-27)

🛠 Fix

16.0.0 (2020-09-27)

💥 Breaking Changes!

  • Shorthand props must come after regular props, console.warn is now a warning in dev to allow enforcing directives

✨ Update

  • Console dev level and React shorthand props ordering 💥 (#249)(f502e5d), closes #249

15.4.0 (2020-09-26)

💖 New

Chore

  • Update devDependencies 🆙 (#247)(fdd401d), closes #247

15.3.0 (2020-09-22)

✨ Update

15.2.1 (2020-09-13)

🛠 Fix

15.2.0 (2020-09-13)

✨ Update

  • Disable import/no-unassigned-imports ⚙️ (#244)(f5eae35), closes #244

15.1.0 (2020-09-12)

✨ Update

15.0.0 (2020-09-12)

💥 Breaking Changes!

  • Use enableTS and enableESM to disable TypeScript and ESModule configs when necessary.

💖 New

  • TS by default support 💖 (#243)(7ade772), closes #243

14.12.1 (2020-09-12)

🛠 Fix

  • Check for exports from TS files always 🎊 (#241)(83d22d4), closes #241

14.12.0 (2020-09-12)

✨ Update

Chore

  • Update package husky to v4.3.0 🆙 (#239)(0c40177), closes #239

14.11.1 (2020-09-05)

🛠 Fix

14.11.0 (2020-09-04)

✨ Update

  • Package dependencies 🆙 (#237)(dfd3251), closes #237

Chore

  • Update devDependencies 🆙 (#232)(0454b1f), closes #232
  • Update package @types/jest to v26.0.12 🆙 (#235)(8a595e4), closes #235
  • Update package jest to v26.4.2 🆙 (#234)(e75f7e1), closes #234

14.10.0 (2020-08-06)

✨ Update

Chore

  • Update devDependencies 🆙 (#230)(f48f27c), closes #230

14.9.0 (2020-07-29)

✨ Update

Chore

  • Fix Readme links 📝(a62c4ad)
  • Update package @types/jest to v26.0.7 🆙 (#228)(5779bfc), closes #228

14.8.0 (2020-07-26)

✨ Update

Chore

  • Update package @types/jest to v26.0.5 🆙 (#227)(2094a80), closes #227

14.7.0 (2020-07-08)

✨ Update

  • Package eslint-plugin-react-hooks to v4.0.6 🆙 (#225)(cdbc35d), closes #225

14.6.0 (2020-07-06)

✨ Update

  • Package dependencies 🆙 (#224)(bf1bb7d), closes #224

Chore

  • Update package @types/jest to v26.0.3 🆙 (#223)(c657b82), closes #223
  • Update package jest to v26.1.0 🆙 (#222)(0d17263), closes #222

14.5.0 (2020-06-14)

✨ Update

Chore

  • Update package @types/jest to v26 🆙 (#219)(dc870c0), closes #219

14.4.0 (2020-06-03)

✨ Update

Chore

  • Update package @crystal-ball/semantic-release-base to v2.19.0 🆙 (#216)(f9e0569), closes #216

14.3.2 (2020-06-01)

🛠 Fix

  • Node projects linting 🎊 (#215)(ede0fb8), closes #215

14.3.1 (2020-05-31)

🛠 Fix

  • Disable atomic updates rule ✅ (#214)(7a1ca42), closes #214

14.3.0 (2020-05-31)

💖 New

  • Configs for ignorePatterns and rules 💖 (#213)(7c30ff4), closes #213

14.2.1 (2020-05-31)

🛠 Fix

  • Disable import/no-unused-imports entirely ⚙️ (#212)(f7a6ea7), closes #212

14.2.0 (2020-05-30)

✨ Update

🛠 Fix

  • Ignore tests and entry for unused-imports ⚙️ (#211)(743663b), closes #211

14.1.5 (2020-05-30)

🛠 Fix

  • Unused imports, extensions and dependencies rules ⚙️ (#210)(7b0288d), closes #210

14.1.4 (2020-05-25)

🛠 Fix

  • Cleanup import rules ⚙️ (#208)(ddcbf37), closes #208

14.1.3 (2020-05-25)

🛠 Fix

  • Duplicated import linting ⚙️ (#207)(e575586), closes #207

Docs

  • Add notes.md for tracking ideas 📝 (#206)(e6d1271), closes #206

14.1.2 (2020-05-25)

🛠 Fix

  • Minor rule failures around TypeScript and Node plugins ⚙️ (#205)(d4c9f4f), closes #205

14.1.1 (2020-05-24)

🛠 Fix

  • Jest-dom rule typos and .eslintrc.js configs (#204)(0cc1c52), closes #204

14.1.0 (2020-05-24)

✨ Update

  • Package eslint to v7.1.0 🆙 (#197)(4843f9f), closes #197

Chore

  • Add Code Climate config ⚙️ (#203)(302e4ae), closes #203

14.0.0 (2020-05-24)

💥 Breaking Changes!

  • Extends entry points removed, all users must now import eloquence and generate base configs with a target.

🔖 Release Notes

  • Rules for Jest DOM and React Testing Library added and rules for Node.js improved by switching to the eslint-plugin-node plugin.

💖 New

  • ESLint 7, jest-dom, react-testing-library and node plugins 💖 (#202)(1d79ae9), closes #202 #201

Chore

  • Reconfigure Renovate ⚙️ (#195)(df5f3bf), closes #195
  • Update dev dependencies 🆙 (#194)(cd5f099), closes #194

13.8.0 (2020-04-27)

✨ Update

  • Package dependencies 🆙 (#193)(18d430a), closes #193

Chore

  • Add unit tests ✅ (#190)(da8c312), closes #190
  • Reconfigure Renovate ⚙️ (#191)(a229be2), closes #191
  • Update package @crystal-ball/commitizen-base to v2.5.0 🆙 (#192)(76efc6a), closes #192
  • Update package @crystal-ball/prettier-base to v2.1.0 🆙 (#189)(d81e929), closes #189

13.7.0 (2020-04-18)

✨ Update

  • Package dependencies 🆙(b0a178c)

13.6.0 (2020-03-15)

✨ Update

  • Package dependencies 🆙 (#182)(f717632), closes #182

13.5.0 (2020-03-03)

✨ Update

  • Package dependencies 🆙 (#181)(5b5b1ab), closes #181

13.4.0 (2020-02-25)

✨ Update

  • Package dependencies 🆙(f38437f)

Chore

13.3.0 (2020-02-20)

✨ Update

  • Package dependencies 🆙 (#180)(85bf6e8), closes #180

13.2.2 (2020-02-20)

🛠 Fix

  • Add babel config to allowed dev deps override (#179)(db81b32), closes #179

13.2.1 (2020-02-18)

🛠 Fix

  • Typescript and Storybook configs (#178)(1322321), closes #178

13.2.0 (2020-02-18)

💖 New

  • Computed index entry for Babel projects 🤩 (#177)(01277d8), closes #177

Chore

  • Update package @crystal-ball/semantic-release-base to v2.13.0 🆙 (#174)(5676e5d), closes #174

13.1.0 (2020-02-09)

💖 New

  • Allow defining jest.mocks before import calls 🔮✨(7b70e10)

13.0.2 (2020-02-08)

🛠 Fix

13.0.1 (2020-02-02)

🛠 Fix

  • Env severity regression 🦺 (#171)(6a5b6e8), closes #171

13.0.0 (2020-02-02)

💥 Breaking Changes!

  • Storybook and Cypress entry files are removed

🔖 Release Notes

  • Remove eloquence/storybook and eloquence/cypress config files, remove eslint comments for webpack.config.js

💖 New

  • Add file overrides to Node and React projects 💖 (#170)(86c5a8e), closes #170

Chore, Docs

  • Update package docs 📝(0fc7366)
  • Update project and TypeScript docs 📝(258a3d0)

12.21.0 (2020-02-02)

✨ Update

  • Improved React rules 🆙 (#169)(caa1f42), closes #169

12.20.0 (2020-02-02)

✨ Update

  • Upgrade TypeScript confgs 🔐 (#168)(ec59fc7), closes #168

Chore

  • Update dev dependencies 🆙 (#167)(f439be5), closes #167

12.19.0 (2020-01-20)

✨ Update

  • Package eslint-plugin-react upgrades to v7.18.0 🆙 (#166)(8f1cb2d), closes #166

Chore

  • Update dev dependencies 🆙 (#165)(6292884), closes #165

12.18.0 (2020-01-14)

✨ Update

  • Package eslint-plugin-import upgrades to v2.20.0 🆙 (#163)(46c8988), closes #163

Chore

  • Update package husky to v4 🆙 (#164)(f377017), closes #164

12.17.0 (2020-01-01)

✨ Update

  • Package eslint-config-prettier upgrades to v6.9.0 🆙 (#162)(9098ddc), closes #162

Chore

  • Update package @crystal-ball/semantic-release-base to v2.9.0 🆙 (#161)(ebd2bac), closes #161

12.16.0 (2019-12-22)

✨ Update

  • Package dependencies 🆙 (#159)(8e06aa3), closes #159

Chore

  • Better dev rule overrides compliance (#160)(7baa1c9), closes #160
  • Update package @crystal-ball/semantic-release-base to v2.7.0 🆙 (#158)(67a7135), closes #158

12.15.1 (2019-12-04)

🛠 Fix

  • Only enforce props order, not alphabetical sorting ✓ (#157)(602b3fe), closes #157

12.15.0 (2019-12-02)

✨ Update

  • Upgrade rule settings for sorting in React components (#156)(9984dab), closes #156

12.14.0 (2019-12-02)

✨ Update

  • Package dependencies 🆙 (#155)(6c13296), closes #155

Chore

  • Update package @crystal-ball/semantic-release-base to v2.6.0 🆙 (#154)(4d7f458), closes #154

12.13.0 (2019-11-25)

✨ Update

  • Package dependencies 🆙 (#153)(1c3e024), closes #153

Chore

  • Pin install versions ⚙️(58b5b80)

12.12.0 (2019-11-21)

💖 New

Chore

12.11.0 (2019-11-19)

✨ Update

  • Package eslint-config-prettier upgrades to v6.6.0 🆙 (#151)(2e3cf1d), closes #151

Chore

  • Add checks for skipping ci ⚙️ (#149)(4ae4474), closes #149
  • Update dev dependencies 🆙 (#150)(eb4e39b), closes #150

12.10.1 (2019-11-16)

🛠 Fix

  • Ignore test/ for no-extraneous-dependencies (#148)(0083611), closes #148

Chore

  • Code authoring format script improvements ⚙️(faa8e17)
  • Code authoring updates 📝(4e6bba4)

12.10.0 (2019-11-13)

✨ Update

  • Package eslint-formatter-pretty upgrades to v3 🆙 (#147)(64181f3), closes #147

Chore

  • Prune unnecessary template file(6bd1cdc)
  • Reconfigure Renovate 🆙 (#144)(ef45c05), closes #144
  • Update Code of Conduct and Contributing files 🔮✨ (#143)(25e7cc3), closes #143
  • Update dev dependencies 🆙 (#146)(81e13e9), closes #146

12.9.1 (2019-11-07)

🛠 Fix

  • Enforce sort default props rule ✓ (#142)(2f1ca0d), closes #142

12.9.0 (2019-11-07)

✨ Update

  • Add test and story dirs to extraneous deps ignore (#141)(835947d), closes #141 #140

Chore

  • Update package dev dependencies 🆙(285f0a6)

12.8.0 (2019-11-01)

✨ Update

  • Update all non-major dependencies 🆙 (#139)(70da141), closes #139

Chore

  • Update all non-major devDependencies 🆙 (#138)(db47143), closes #138

12.7.2 (2019-10-14)

🛠 Fix

  • Set import sorts to 'warn' in non strict runs (#135)(30892ef), closes #135

12.7.1 (2019-10-14)

🛠 Fix

  • Allow using async fns without await declarations (#134)(3f1fa03), closes #134 #131

12.7.0 (2019-10-14)

✨ Update

  • Improve the import plugin rule configurations ⚙️ (#133)(bf1f315), closes #133 #131

Chore

  • Update dependency husky to v3.0.9 🆙 (#132)(bda8528), closes #132

12.6.0 (2019-10-09)

💖 New

  • Rules added in new ESLint and plugin versions 💖 (#130)(4e70da4), closes #130 #129

Chore

  • Match workflows filename convention 🔮✨ (#128)(4820d05), closes #128
  • Use commitizen-base ⚙️ (#127)(758183f), closes #127

12.5.0 (2019-10-08)

✨ Update

  • Update all non-major dependencies 🆙 (#126)(8413119), closes #126

Upgrade, Chore

  • Commit-semantics 🆙(5a71a28)
  • Update all non-major dependencies (#109)(d099551), closes #109
  • Allow semantic to check branch ⚙️(6c32b89)
  • Fix Semantic Release CI/CD ⚙️ (#115)(e8e785e), closes #115
  • Reconfigure Renovate (#111)(5a7f879), closes #111
  • Reconfigure Renovate ⚙️ (#118)(26ab05b), closes #118
  • Reconfigure Renovate ⚙️ (#119)(e099462), closes #119
  • Reconfigure Renovate ⚙️ (#125)(c6e3077), closes #125
  • Remove Travis configs ⚙️ (#117)(77c1898), closes #117
  • Setup Github action for testing repo ⚙️ (#113)(d5fc213), closes #113
  • Use names for GH Actions jobs 📝 (#116)(979a2b0), closes #116

12.4.0 (2019-08-26)

Chore

Update

12.3.0 (2019-07-27)

Update

12.2.1 (2019-07-27)

Fix

12.2.0 (2019-07-27)

Update

12.1.0 (2019-07-27)

Update

12.0.1 (2019-07-12)

Docs

Fix

eslint-config-eloquence changelog

This project strictly adheres to semver and will err on the side of releasing majors when changes could possibly introduce breaking changes. This changelog is dynamically generated with Semantic Release configured with @crystal-ball/semantic-release-base.

Changelog tags

  • 💥 - Breaking change
  • 🔖 - Release notes
  • 💖 - New feature
  • ✨ - Updates
  • 🛠 - Fixes

12.0.0 (2019-07-07)

💥 Breaking Changes

Rename any configuration using eloquence/webpack to eloquence/react. This better reflects the project type rather than the tools used for the project.

🔖 Release Notes

This release cleans up the dependencies and rule definitions for Eloquence, most importantly the dependency on the Airbnb package is removed and those rules are copied into this repo. Reasons for this include:

  • Better access to rules to handle switching between dev and test severity levels
  • Faster releases to rules and linting issues
  • More fine grained control of which rules are applied to which lint-set, eg Node.js and React rules are only applied to those lint sets.

Going forward this also has the benefit of consolidating all of the lint rules applied for each set to this repo, allowing this repo to serve as the manager of ESLint dependencies and rules.

💖 New

  • Define rule configurations in repository 💖⏫ (#85) (3f57e7a), closes #85

Docs, Upgrade, Chore

  • Update to project commit semantics 🔮✨ (#72) (8e46a73), closes #72
  • Add some of the missing releases to changelog 📝 (da639ea)
  • Format Changelog 📝 (c828987)
  • Update dependency eslint-plugin-import to v2.17.3 (#69) (955a541), closes #69
  • Update dependency husky to v2.7.0 (#73) (8c70763), closes #73

11.2.0 (2019-05-19)

💖 New

  • Add configs for TypeScript projects (#49) (6761247), closes #49

11.1.0 (2019-05-18)

💖 New

  • Add pretty formatter dependency 💖 (#67) (bd62aaf), closes #67

✨ Update

  • Update dependencies and workflows (#63) (66b2b60), closes #63
  • Update dependency husky to v2.3.0 (#66) (7c5c497), closes #66

Docs, Upgrade, Chore

  • Configure Renovate (#51) (0ceb0ad), closes #51
  • Pin dependencies (#54) (6446a5a), closes #54
  • Update dependency eslint to ~5.16.0 (#56) (3a4a9c8), closes #56
  • Update dependency eslint-config-prettier to ~4.2.0 (#57) (cce72c9), closes #57
  • Update dependency eslint-plugin-import to ~2.17.0 (#58) (248b69f), closes #58
  • Update dependency eslint-plugin-prettier to ~3.1.0 (#59) (30a629c), closes #59
  • Update dependency eslint-plugin-react to ~7.13.0 (#60) (e5248b7), closes #60
  • Update Node.js to v8.16 (#55) (31ce389), closes #55
  • Use Travis to target Node version instead of Docker (#62) (080c66b), closes #62
  • Addl badge awesomeness 💖 (#61) (89279cc), closes #61
  • Replace Greenkeeper badge with Renovate badge (#53) (807b697), closes #53
  • Update dependency eslint-config-prettier to v4.3.0 (#65) (fde33e4), closes #65

11.0.0 (2019-02-08)

💥 Breaking Changes

Project types should be specified using entry files instead of settings

💖 New

  • Entry files for project types created (1e23bb0), closes (#37)

10.1.0 (2019-02-08)

✨ Update

  • Add process global (#36) (2126ced), closes (#35)

10.0.0 (2019-02-08)

💥 Breaking Changes

The flow plugin and rules are no longer included. The project type must be configured in the project .eslintrc.js

✨ Update

  • Update deps, add project type resolver, remove flow plugin (473ba06)

7.2.0 (2018-04-30)

✨ Update

  • log level warn in dev for prefer sfc (9ac8479)

7.1.1 (2018-04-30)

🛠 Fixed

  • fix dev rule breaking package disabling rule

7.1.0 (2018-04-29)

💖 New

  • Project type config to set webpack related project configs with process.env.ELOQUENCE_PROJECT_TYPE

7.0.0 LevelUp (2018-04-29)

🔖 Release Notes

Package v7 includes two important updates:

  • There is a single entry for node and browser project types. The duplicate entry types weren't really needed. Browser projects that do use webpack custom resolution should specify it in the settings.
  • Rule customization levels based on environment is simplified to take advantage of ESLint rule computation. It is possible to set the rule level for inherited rules without specifying the rule options 🎉

6.3.0 (2018-02-07)

💖 New

  • Additional warn in dev rules added

6.2.1 (2018-02-07)

🛠 Fix

  • Function trailing commas removed to provide Node v7.4 compatability for Atom editors.

6.2.0 (2017-12-11)

✨ Update

  • Node projects can now follow best practices and use console.log for outputting to stdout.

6.1.0 (2017-11-17)

💖 New

  • Warnings for low importance, tedious rules are now able to be downgraded during normal development and linted as errors in test. This makes hacking easier 🎉 while still maintaining quality in tests.

Upgrade

  • Updated non Airbnb deps to latest.

6.0.1 (2017-10-23)

🛠 Fix

  • Added specialLink value to to jsx-a11y/anchor-is-valid so that React Router <Link/> components validate correctly.

6.0.0 (2017-10-22)

🔖 Release Notes

v6 updates the linting configurations to match the convention for typing in general and typing for React component props specifically.

The preferred method of adding static typing is with Flow. Support for TypeScript is dropped. Integration with Flow has proven to provide nearly all the benefits of TS with less overhead.

React component prop types should be typed using Flow. This removes the need for using hoisted function names to declare types before component definitions. Class properties or type definitions can be declared at the beginning of component files/definitions. This allows removal of the no-use-before-define customization.