Skip to content

Shared configs for Prettier, ESLint (flat), and TypeScript to standardize formatting and linting across JavaScript/TypeScript projects (Node, React, Next.js, monorepos).

License

Notifications You must be signed in to change notification settings

krudi/shared-configs

Repository files navigation

@krudi/shared-configs

A collection of reusable configuration packages for Prettier, ESLint, Stylelint and TypeScript. The goal is to enforce a consistent coding style, linting, and compiler setup across multiple projects (Node, React, Next.js, Expo, monorepos (Turbo)).

Quick start

Install the dependencies - npm install --save-dev @krudi/prettier-config @krudi/eslint-config @krudi/stylelint-config @krudi/typescript-config

Packages

Package Description Version Additional Information
@krudi/prettier-config Shared Prettier configuration NPM Version NPM Downloads NPM License
@krudi/eslint-config Shared ESLint flat configuration NPM Version NPM Downloads NPM License
@krudi/stylelint-config Shared Stylelint configuration NPM Version NPM Downloads NPM License
@krudi/typescript-config Shared TypeScript configuration NPM Version NPM Downloads NPM License

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:

// 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:

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/react React-specific ESLint configuration with hooks, JSX runtime, and React global definitions
@krudi/eslint-config/nextjs Additional rules and plugins for Next.js projects
@krudi/eslint-config/expo Extra configuration for Expo React Native projects
@krudi/eslint-config/prettier Ensures compatibility between ESLint and Prettier
@krudi/eslint-config/turbo Linting rules tailored for Turborepo monorepos

Stylelint

Install the Stylelint config and its peers:

npm install -D @krudi/stylelint-config

stylelint.config.cjs:

module.exports = {
    extends: ['@krudi/stylelint-config'],
};

stylelint.config.mjs:

export default {
    extends: ['@krudi/stylelint-config'],
};

TypeScript

Create tsconfig.json in your project root and extend the configuration you need:

{ '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 projects
@krudi/typescript-config/expo.json Preconfigured options for Expo apps
@krudi/typescript-config/external-package.json Strict, safe config for public npm packages (external consumption, includes declarations)
@krudi/typescript-config/internal-package.json Config for internal monorepo-only packages, optimized for development speed

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 server

About

Shared configs for Prettier, ESLint (flat), and TypeScript to standardize formatting and linting across JavaScript/TypeScript projects (Node, React, Next.js, monorepos).

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •