Add eslint to your packages.
pnpm add -D @gossi/config-eslint eslint
{
"scripts": {
"lint:js": "eslint . --cache",
"lint:js:fix": "eslint . --fix"
}
}
Create a eslint.config.js
file with your desired config (see below)
The shared common configs. It's good way to start your own config.
// eslint.config.js
import base from '@gossi/config-eslint/base';
export default configs.base(import.meta.dirname);
For all node projects.
// eslint.config.js
import node from '@gossi/config-eslint/node';
export default node(import.meta.dirname);
For all ember projects.
// eslint.config.js
import ember from '@gossi/config-eslint/ember';
export default ember(import.meta.dirname);
overriding with storybook (install eslint-plugin-storybook
):
import storybook from 'eslint-plugin-storybook';
import ember from '@gossi/config-eslint/ember';
export default [
...ember(import.meta.dirname),
...storybook.configs['flat/recommended'],
...storybook.configs['flat/csf']
];
If you wish, use it for json.
// eslint.config.js
import json from '@gossi/config-eslint/json';
export default json();
To see what the resolved config looks like for a file
ppx @eslint/config-inspector
Some utilities to help you writing/customizing rules.
Find out, if a babel config is used:
import { utils } from '@gossi/config-eslint';
const usesBabelWithAConfig = utils.hasBabelConfig(import.meta.dirname);
Find out, if typescript is being used.
import { utils } from '@gossi/config-eslint';
const usesTypescript = utils.hasTypescript(import.meta.dirname);
Find out, if package is using "type": "module"
.
import { utils } from '@gossi/config-eslint';
const usesESM = utils.hasTypeModule(import.meta.dirname);
Figure, if a given dependency is present
import { utils } from '@gossi/config-eslint';
const usesStorybook = utils.hasDep(import.meta.dirname, 'storybook');