@cityelectricalfactors/eslint-config-cef-app
v1.0.4
Published
This package provides CEF's .eslintrc and .prettierrc as an extensible shared config.
Downloads
73
Readme
CEF ESLint + Prettier config package
This package provides CEF's .eslintrc and .prettierrc as an extensible shared config.
Our package includes all the required packages as dependencies, except for the most basic:
- eslint
- prettier
We will specify those as peer dependencies instead. The reason is that they are not strictly required by the plugins, but rather the other way around:, eslint and prettier are "host' packages which will load our config/plugins. I suggest reading this npm blog post for a more detailed explanation.
This is also an effective way to specify the supported host package versions. An example:
{
"peerDependencies": {
"eslint": "^6 || ^7.2.0",
"prettier": ">= 1.13"
}
}
We have plenty of options here: luckily, the ESLint documentation is very helpful. A few key points:
- A config/plugin will not be loaded by ESLint unless if you specify it here!
- The precedence of items in extends and plugins follows the order they are listed. This is important in case some items conflict each other
- A rule can be either specified as
- a string/number indicating its level: 'off' | 'warn' | 'error', 0 | 1 | 2
- an array of [level, options] where options is used to configure the rule. You can look at each rule's documentation for the available options, for example: import/order options
Test your package locally
Before sharing your package with the world, you’ll want to be confident that the package works. The way that works best is to:
In the cityelectricalfactors-eslint-app
folder, type:
yarn link
Then, in your project that wants to use your shareable config, type:
yarn link @cityelectricalfactors/eslint-config-cef-app
Publishing Changes
If you’re happy your package is working correctly and you have updated the README.md file, then you’re ready to go live (don't forget to update the version number in the package.json)!
- If you haven’t already, sign-up to npm.
- Go into your terminal, type npm login and insert your details.
- In the terminal, navigate to the root directory of your package and type npm publish
Installation
Warning:
eslint-config-react-native-app is currently incompatible with ESLint 8 which has just been released. Package.json version pulled to 7.32.0. see here
- Install the peer dependencies as devDependencies in our project:
you can find out the peer dependencies by running:
npm info "@cityelectricalfactors/eslint-config-cef-app" peerDependencies
yarn add --dev @babel/core @babel/runtime babel-jest [email protected] eslint-plugin-babel eslint-plugin-import jest @babel/eslint-parser eslint-plugin-jsx-a11y
- Install our config. For npm packages:
yarn add --dev @cityelectricalfactors/eslint-config-cef-app
For git repositories:
yarn add git+{{gitUrl}}
# Example:
yarn add git+https://github.com/organisation/packageName.git
- Configure ESLint to use our package. There are many ways to do so, the simplest probably is adding an eslintConfig field in our project's package.json file or removing all from your current eslint file and adding this:
{
"extends": "@cityelectricalfactors/eslint-config-cef-app"
}
- Add the scripts into the package.json
"lint": "eslint . --ignore-path .gitignore .",
"lint:write": "eslint --debug src/**/*.js --fix",
"prettier": "prettier --write src/**/*.js",