https://github.com/krudi/shared-configs
Shared configs for Prettier, ESLint (flat), and TypeScript to standardize formatting and linting across JavaScript/TypeScript projects (Node, React, Next.js, monorepos).
https://github.com/krudi/shared-configs
code-style config eslint eslint-config flat-config formatter linting monorepo nextjs prettier react shared-config shared-configs tsconfig typescript
Last synced: 4 months ago
JSON representation
Shared configs for Prettier, ESLint (flat), and TypeScript to standardize formatting and linting across JavaScript/TypeScript projects (Node, React, Next.js, monorepos).
- Host: GitHub
- URL: https://github.com/krudi/shared-configs
- Owner: krudi
- License: mit
- Created: 2025-09-01T19:16:05.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2025-09-02T16:24:56.000Z (4 months ago)
- Last Synced: 2025-09-02T17:13:17.523Z (4 months ago)
- Topics: code-style, config, eslint, eslint-config, flat-config, formatter, linting, monorepo, nextjs, prettier, react, shared-config, shared-configs, tsconfig, typescript
- Language: TypeScript
- Homepage:
- Size: 56.6 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
- Security: .github/SECURITY.md
Awesome Lists containing this project
README
# @krudi/shared-configs
A collection of reusable configuration packages for Prettier,
[ESLint](https://github.com/eslint/eslint) and
[TypeScript](https://github.com/microsoft/TypeScript). The goal is to enforce a
consistent coding style, linting, and compiler setup across multiple projects
([Node](https://github.com/nodejs/node),
[React](https://github.com/facebook/react/),
[Next.js](https://github.com/vercel/next.js),
[Expo](https://github.com/expo/expo), monorepos
([Turbo](https://github.com/vercel/turborepo))).
### Quick start
Install the dependencies -
`npm install --save-dev @krudi/prettier-config @krudi/eslint-config @krudi/typescript-config`
### Packages
| Package | Description | Version | Additional Information |
| ---------------------------------------------------------------------------------- | -------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| [@krudi/prettier-config](https://www.npmjs.com/package/@krudi/prettier-config) | Shared [Prettier](https://github.com/prettier/prettier) configuration |  |   |
| [@krudi/eslint-config](https://www.npmjs.com/package/@krudi/eslint-config) | Shared [ESLint](https://github.com/eslint/eslint) flat configuration |  |   |
| [@krudi/typescript-config](https://www.npmjs.com/package/@krudi/typescript-config) | Shared [TypeScript](https://github.com/microsoft/TypeScript) configuration |  |   |
Each package can be installed individually depending on your needs.
#### Prettier
Create `prettier.config.mjs` (or `prettier.config.js`) in your project root and
extend the configuration you need:
```js
// ESM
import base from '@krudi/prettier-config/base';
/** @type {import("prettier").Options} */
export default {
...base,
};
// CommonJS
const base = require('@krudi/prettier-config/base');
/** @type {import('prettier').Options} */
module.exports = {
...base,
};
```
#### ESLint (flat config)
Create `eslint.config.mjs` (or `eslint.config.ts`) in your project root and
extend the configuration you need:
```js
import base from '@krudi/eslint-config/base';
import prettier from '@krudi/eslint-config/prettier';
import turbo from '@krudi/eslint-config/turbo';
export default [...base, ...prettier, ...turbo];
```
| File | Purpose |
| ----------------------------- | ----------------------------------------------------------------------------------------- |
| @krudi/eslint-config/base | Base ESLint rules for general TypeScript/JavaScript projects |
| @krudi/eslint-config/nextjs | Additional rules and plugins for [Next.js](https://github.com/vercel/next.js) projects |
| @krudi/eslint-config/expo | Extra configuration for [Expo](https://github.com/expo/expo) React Native projects |
| @krudi/eslint-config/prettier | Ensures compatibility between ESLint and [Prettier](https://github.com/prettier/prettier) |
| @krudi/eslint-config/turbo | Linting rules tailored for [Turborepo](https://github.com/vercel/turborepo) monorepos |
#### TypeScript
Create `tsconfig.json` in your project root and extend the configuration you
need:
```yaml
{
'extends': '@krudi/typescript-config/base.json',
'compilerOptions': {},
'exclude': ['node_modules', 'dist'],
}
```
| File | Purpose |
| ---------------------------------------- | ---------------------------------------------------------------------------- |
| @krudi/typescript-config/base.json | Base configuration for general TypeScript projects |
| @krudi/typescript-config/nextjs.json | Optimized settings for [Next.js](https://github.com/vercel/next.js) projects |
| @krudi/typescript-config/expo.json | Preconfigured options for [Expo](https://github.com/expo/expo) apps |
| @krudi/typescript-config/base.build.json | Stricter configuration for building **npm packages** and CI pipelines |
### Development
1. First clone this repository and navigate into your project directory
2. Install the dependencies: `npm install`
3. `npm run build` - to build all packages
4. `npm run dev` - run the [TypeScript](https://www.typescriptlang.org/) server