eslint-config-architower
v2.0.0
Published
Our shareable config & rules for ESLint
Downloads
21
Maintainers
Readme
ArchiTower ESLint Config
Our shareable config & rules for ESLint
How to use it?
1.Add package & necessary dependencies (such as ESlint
& Prettier
) to your
repository, for, e.g. with pnpm
or your package manager of choice:
pnpm i -D eslint prettier eslint-config-architower
2.Extend your local ESLint config file with ArchiTower config:
module.exports = {
extends: ["architower"],
}
Without Prettier
When you don't want to use prettier, you can easily make a little different config:
module.exports = {
extends: [
"architower/ecma",
"architower/typescript",
"architower/html",
"architower/json",
"architower/yaml",
"architower/markdown",
],
}
Using with Node.js
When you want to use our config for Node.js based solution, please change the config extension to:
module.exports = {
extends: ["architower/node"],
}
Then, define the node engine version in package.json
:
{
"engines": {
"node": ">=14.0.0"
}
}
Using with Vitest
How do you want to structurize the unit & integration tests written using Vitest
in your project? Even in our projects, we use different approaches. Sometimes
unit tests have their extension, and integrations have their own. Sometimes
there share the file extensions. To provide an elastic way to configure it, we
created a dedicated configuration for Vitest, which you can use via overrides
:
module.exports = {
root: true,
extends: ["architower"],
overrides: [
{
files: ["**/*.{test,integration}.{js,ts}", "**/*Builder.ts"],
extends: ["architower/vitest"],
},
],
}
Using with Playwright
We use the same model as Vitest with Playwright - because sometimes End-To-End test suites are entirely different apps in the same monorepo and sometimes another repository. Still, in many projects, E2Es are together with the app's production code in a specific directory. So to provide flexible configuration for all those possibilities, we create separate config just with rules for Playwright. You can use it precisely on your chosen location, extension, etc.
module.exports = {
root: true,
extends: ["architower"],
overrides: [
{
files: ["**/*.spec.ts"],
extends: ["architower/playwright"],
},
],
}
Using with VSCode
To get vscode-eslint support, we need to add the following in vscode settings
(.vscode/settings.json
).
{
"eslint.enable": true,
"eslint.validate": [
"javascript",
"javascriptreact",
"typescript",
"typescriptreact",
"vue",
"json",
"jsonc",
"json5",
"yaml",
"html"
]
}
Used rulesets & plugins
- eslint-comments
- unicorn
- compat
- jsonc
- yml
- no-secrets
- html-eslint
- html
- markdown
- prettier
- no-unsanitized
- promise
- sonarjs
- n
- security
- etc
- @microsoft/sdl
- write-good-comments
- vitest
- playwright
Development
First make a copy of this repository and install all dependencies using pnpm
:
git clone [email protected]:ArchiTower/eslint-config-architower.git
cd eslint-config-architower
pnpm i
Then, create a branch, make your changes in code, commit it following gitmoji & conventional commits styles.
After that, push it and then create a
Pull Request
with the target to develop
branch.
Branching
In our repositories, we're following the simple solution:
main
branch represents stable releases of the libraries or production environment of released applicationsdevelop
branch is for releasing candidates, betas, etc. Here we are developing a solution - a library or app.