@mkvlrn/config
v1.0.4
Published
Opinionated configs for eslint, prettier, and typescript (tsconfig)
Downloads
368
Maintainers
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:
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 reacteslint-vite
for vite/react projectseslint-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:
for simple node or nestjs projects (pretty much anything that doesn't use react):
export { default } from "@mkvlrn/config/eslint-node";
for vite/react projects:
export { default } from "@mkvlrn/config/eslint-vite";
for nextjs projects:
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:
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:
for all projects, using the config without modifying it:
export { default } from "@mkvlrn/config/prettier";
and if you want to modify any of the rules, you can do so:
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 reacttsconfig-vite
for vite/react projectstsconfig-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:
for simple node or nestjs projects (pretty much anything that doesn't use react):
{
"extends": "@mkvlrn/config/tsconfig-node",
"compilerOptions": {
// add your custom rules here
"noEmit": false,
},
}
for vite/react projects:
{
"extends": "@mkvlrn/config/tsconfig-vite",
"compilerOptions": {
// add your custom rules here
"noUncheckedIndexedAccess": true,
},
}
for nextjs projects:
{
"extends": "@mkvlrn/config/tsconfig-next",
"compilerOptions": {
// add your custom rules here
"noUncheckedIndexedAccess": true,
},
}