Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mkvlrn/config
Opinionated configs for eslint, prettier, and typescript (tsconfig)
https://github.com/mkvlrn/config
config eslint prettier tsconfig typescript
Last synced: 2 months ago
JSON representation
Opinionated configs for eslint, prettier, and typescript (tsconfig)
- Host: GitHub
- URL: https://github.com/mkvlrn/config
- Owner: mkvlrn
- License: isc
- Created: 2024-10-26T21:46:28.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2024-11-28T06:38:06.000Z (2 months ago)
- Last Synced: 2024-11-28T06:42:32.370Z (2 months ago)
- Topics: config, eslint, prettier, tsconfig, typescript
- Language: JavaScript
- Homepage:
- Size: 113 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# @mkvlrn/config
## what
custom, opinionated configurations for `eslint`, `prettier`, and `typescript` (`tsconfig.json`) to be used in my node and bun (deno doesn't want anything to do with eslint, prettier, or even tsconfig files so yeah) projects - aimed at modern, type-safe, non-spaghetti codebases
created to work with `esm` projects **only**. if you're still using `cjs` you are wrong and you will be sent to the gulag
## how
works exactly the same for `npm`, `yarn`, `pnpm`, and `bun` - exemplified with `yarn` here:
```bash
yarn add typescript eslint prettier @mkvlrn/config -D
```then import the configurations from the package on your config files:
### eslint
three eslint flat configs are exposed:
- `eslint-node` for whatever node project (inlcuding nestjs) without react
- `eslint-vite` for vite/react projects
- `eslint-next` for nextjs projects (which requires some special rules)**all** rulesets/plugins are installed with the package, it's a flat config, so it's fancy that way
installing eslint separately is **required**
create/edit your configuration file as below:
eslint.config.js
for simple node or nestjs projects (pretty much anything that doesn't use react):
```js
export { default } from "@mkvlrn/config/eslint-node";
```for vite/react projects:
```js
export { default } from "@mkvlrn/config/eslint-vite";
```for nextjs projects:
```js
export { default } from "@mkvlrn/config/eslint-next";
```if you want to add rules to the config, you export it as default while adding your rules to the config array:
```js
import base from "@mkvlrn/config/eslint-node";export default [
...base,{
rules: {
// add your custom rules here
"no-console": "error",
},
// or ignores
ignores: ["dist"],
},
];
```### prettier
a packaged prettier configuration with some opinionated defaults that works in any kind of typescript project
also brings tailwindcss support (order of classes) and imports sorting, both via plugins
installing prettier separately is **required**
create/edit your configuration file as below:
prettier.config.js
for all projects, using the config without modifying it:
```js
export { default } from "@mkvlrn/config/prettier";
```and if you want to modify any of the rules, you can do so:
```js
import base from "@mkvlrn/config/prettier";export default {
...base,// add your custom rules here
printWidth: 80,
};
```### typescript (tsconfig)
three typescript configurations are exposed:
- `tsconfig-node` for whatever node project (inlcuding nestjs) without react
- `tsconfig-vite` for vite/react projects
- `tsconfig-next` for nextjs projects (which requires some special rules)anything related to files needs to be set: `rootDir`, `outDir`, `baseUrl`, `paths`, etc
this prevents path confusion because the "original" tsconfig will be in `node_modules`
defaults to `noemit` because I use swc to build my stuff so you might want to change that if you still want to use `tsc` (a simple `tsc --noEmit` will work)
installing typescript separately is **required**
create/edit your configuration file as below:
tsconfig.json
for simple node or nestjs projects (pretty much anything that doesn't use react):
```jsonc
{
"extends": "@mkvlrn/config/tsconfig-node",
"compilerOptions": {
// add your custom rules here
"noEmit": false,
},
}
```for vite/react projects:
```jsonc
{
"extends": "@mkvlrn/config/tsconfig-vite",
"compilerOptions": {
// add your custom rules here
"noUncheckedIndexedAccess": true,
},
}
```for nextjs projects:
```jsonc
{
"extends": "@mkvlrn/config/tsconfig-next",
"compilerOptions": {
// add your custom rules here
"noUncheckedIndexedAccess": true,
},
}
```