@justeattakeaway/pie-eslint-config

0.2.0 • Public • Published

pie-eslint-config

npm version

This package provides Just Eat Takeaway's base JS .eslintrc as an extensible shared config and it builds upon the previous work done on @justeat/eslint-config-fozzie

It extends the eslint-config-airbnb-base ruleset with our own set of JS linting rules.

Many thanks to the work that the Airbnb team have put in on creating their template for extension rules – we have liberally borrowed from their structure and documentation in creating this ruleset.

Usage

pie-eslint-config

Our default export contains our base ESLint rules, including ECMAScript 6+. It requires eslint and eslint-plugin-import.

  1. Install the correct versions of each package, which are listed by the command:
npm info "@justeattakeaway/pie-eslint-config@latest" peerDependencies

Linux/OSX users can simply run

(
  export PKG=@justeattakeaway/pie-eslint-config;
  npm info "$PKG@latest" peerDependencies --json | command sed 's/[\{\},]//g ; s/: /@/g' | xargs npm install --save-dev "$PKG@latest"
)

Which produces and runs a command like:

  npm install --save-dev @justeattakeaway/pie-eslint-config eslint@^#.#.# eslint-plugin-import@^#.#.#

Windows users can either install all the peer dependencies manually, or use the install-peerdeps cli tool.

npm install -g install-peerdeps
install-peerdeps --dev @justeattakeaway/pie-eslint-config

The cli will produce and run a command like:

npm install --save-dev @justeattakeaway/pie-eslint-config eslint@^#.#.# eslint-plugin-import@^#.#.#
  1. Add "extends": "@justeattakeaway/pie-eslint-config" to your .eslintrc file, which should look like this:
// Use this file as a starting point for your project's .eslintrc.js
// Rule overrides can be added as needed
module.exports = {
    extends: '@justeattakeaway/pie-eslint-config'
}

Note for PIE developers

The usage in Pie monorepo is a bit different, since it's preferrable to use the ESLint rules directly from the PIE monorepo. This allow us to always be on the latest version without requiring any manual update.

module.exports = {
    extends: [require.resolve('@justeattakeaway/pie-eslint-config/strict')],
}

Rulesets

The package contains two ESLint rulesets:

  • base is the default, less opinionated
  • strict extends base and it's more opinionated

In order to use the strict set, update the extends field:

module.exports = {
    extends: '@justeattakeaway/pie-eslint-config/strict'
}

The rules for both sets can be found at pie-eslint-config/base|strict/rules.

Framework specific rules

Both base and strict rulesets are framework agnostic, though Vue.js rules are available as an optional export. React rules will be added in the near future.

In order to use Vue.js rules, import them from frameworks and merge them to your config rules field:

const { vue, vue3 } = require('@justeattakeaway/pie-eslint-config/frameworks');

module.exports = {
    rules: {
        ...vue.rules, ...vue3.rules,
    },
};

Testing

You can run tests on this ruleset with npm test.

You can make sure this module lints with itself using npm run lint:scripts.

Package Sidebar

Install

npm i @justeattakeaway/pie-eslint-config

Weekly Downloads

2

Version

0.2.0

License

Apache-2.0

Unpacked Size

40.8 kB

Total Files

24

Last publish

Collaborators

  • ilia.chikmarev
  • phatpt8
  • anastasiia.horban
  • mmakwe-onyeka
  • gregory.palaci
  • roberto.santana
  • siggerzz
  • lizzie.turney
  • jamieomaguire
  • davidpn.11
  • mwh1989
  • ashleynolan
  • fozzie-bot