Skip to content

igorskyflyer/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

25 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Icon of dotfiles by Igor Dimitrijević (igorskyflyer)

dotfiles

Lint β€’ Format β€’ TypeScript β€’ Zero-Config DX

🦐 A curated index of all published @igorskyflyer configuration packages;
crafted for a seamless DX. 🦀


Table of Contents


Packages

Each package is independently installable. Pick, extend and go.

Package Config Type Category
@igorskyflyer/biome-config biome.json config linter / formatter
@igorskyflyer/editorconfig .editorconfig CLI editor
@igorskyflyer/oxfmt-config .oxfmtrc.json config formatter
@igorskyflyer/oxlint-config .oxlintrc.json config linter
@igorskyflyer/prettier-config prettier.config.mjs config formatter
@igorskyflyer/tsconfig tsconfig.json config TypeScript
Table 1. packages list (A-Z)

Strict, opinionated Biome configuration for modern JavaScript and TypeScript projects.

  • πŸ‘½ Strict linting rules for correctness, performance and style
  • πŸ” Catches unused variables, imports, parameters and private class members
  • 🎨 Custom formatting for JSON and JS/TS - single quotes, LF endings, 2-space indentation
  • 🧠 Complexity warnings to reduce cognitive load and improve logic clarity
  • ⚑ Performance-focused rules - flags barrel files, re-export-all and top-level regex
  • πŸ“ Enforced filenaming conventions with strict casing and ASCII requirements
  • πŸ›‘οΈ Suspicious behavior checks - console usage, overload signatures and error messaging
  • βœ’οΈ Keep trailing commas and remove unnecessary semicolons for cleaner diffs
  • 🧹 Import organization powered by Biome's built-in organizeImports
  • πŸ” Supports adjacent overloads and explicit length checks

Usage

Install it by executing any of the following, depending on the preferred package manager:

bun add -D @igorskyflyer/biome-config
pnpm add -D @igorskyflyer/biome-config
yarn add -D @igorskyflyer/biome-config
npm i -D @igorskyflyer/biome-config

After installation reference it in the project's biome.json config file.

biome.json

{
  "extends": ["@igorskyflyer/biome-config"]
}

Override any rule locally as needed:

biome.json

{
  "extends": ["@igorskyflyer/biome-config"],
  "linter": {
    "rules": {
      "suspicious": {
        "noConsole": "error"
      }
    }
  }
}

CLI tool that instantly provisions a .editorconfig into any project.

  • 🎨 Copies .editorconfig into the current project instantly
  • ⚠️ Detects existing .editorconfig and prompts before overwriting
  • ⏭️ Skips safely on declined overwrite - no destructive changes
  • βœ… Clear success and error feedback for every outcome
  • πŸ›‘οΈ Zero dependencies - pure Node.js built-ins only

Usage

In a terminal, run:

npx @igorskyflyer/editorconfig
bunx @igorskyflyer/editorconfig
pnpm dlx @igorskyflyer/editorconfig
yarn dlx @igorskyflyer/editorconfig

and follow the instructions.


Or install globally:

bun add -g @igorskyflyer/editorconfig
pnpm add -g @igorskyflyer/editorconfig
npm i -g @igorskyflyer/editorconfig

Then run:

editorconfig

Pixel-perfect formatting config powered by oxfmt, covering every modern file type.

  • ✨ Pixel-perfect, consistent formatting across all modern file types
  • πŸ“¦ Handles JS, TS, JSX, TSX, JSON, HTML, CSS, Vue and more
  • πŸ” Intelligent import sorting - builtin first, then internal, then external
  • 🎯 Opinionated defaults - extend and go, zero bikeshedding
  • ⚑ Powered by oxfmt - 30x faster than Prettier
  • πŸ›‘οΈ Zero dependencies - oxfmt is a peer dependency only

Usage

Install it by executing any of the following, depending on the preferred package manager:

bun add -D @igorskyflyer/oxfmt-config
pnpm add -D @igorskyflyer/oxfmt-config
yarn add -D @igorskyflyer/oxfmt-config
npm i -D @igorskyflyer/oxfmt-config

After installation reference it in the project's .oxfmtrc.json config file.

.oxfmtrc.json

{ "extends": "@igorskyflyer/oxfmt-config" }

Override any rule locally as needed:

.oxfmtrc.json

{
  "extends": "@igorskyflyer/oxfmt-config",
  "printWidth": 100,
  "endOfLine": "crlf",
  "arrowParens": "avoid"
}

Strict oxlint ruleset covering TypeScript, imports, promises, unicorn and test plugins.

  • βš“ Strict, opinionated oxlint config for modern JavaScript and TypeScript projects
  • πŸ” Catches unused variables, imports, explicit any, floating promises and unsafe assignments
  • πŸ“¦ Covers typescript, import, node, promise, unicorn, jest and vitest plugins
  • πŸš€ node: protocol enforced, barrel files flagged, accumulating spreads detected
  • πŸ”„ Import cycle, duplicate and absolute path detection built-in
  • πŸ§ͺ Vitest-aware rules - no focused, disabled or conditionally skipped tests slip through
  • πŸ¦„ Unicorn rules for modern idioms - prefer-at, prefer-includes, numeric-separators and more
  • πŸ›‘οΈ Zero bikeshedding - one config, all projects, extend and go

Usage

Install it by executing any of the following, depending on the preferred package manager:

bun add -D @igorskyflyer/oxlint-config
pnpm add -D @igorskyflyer/oxlint-config
yarn add -D @igorskyflyer/oxlint-config
npm i -D @igorskyflyer/oxlint-config

After installation, reference it in the project's .oxlintrc.json.

.oxlintrc.json

{
  "extends": ["@igorskyflyer/oxlint-config"]
}

Override any rule locally as needed:

.oxlintrc.json

{
  "extends": ["@igorskyflyer/oxlint-config"],
  "rules": {
    "no-console": "error"
  }
}

Prettier config for JS/TS projects. Single quotes, no semis, LF, trailing commas.

  • ⚑ Zero-config setup - extend and go
  • πŸ”€ Single quotes for JS/TS, double quotes for JSX
  • 🚫 No semicolons, with trailing commas - cleaner diffs
  • πŸ“ 2-space indentation, LF line endings, 80-char print width
  • πŸ“¦ Covers JS, TS, JSX, TSX, JSON, HTML, CSS, Vue and more
  • 🎯 All valid Prettier options explicitly set - no surprises
  • πŸ”² Object wrap preserved - inline objects stay inline, expanded stay expanded
  • πŸ”’ Experimental options locked in - no unintended behavior on upgrades

Usage

Install it by executing any of the following, depending on the preferred package manager:

bun add -D @igorskyflyer/prettier-config
pnpm add -D @igorskyflyer/prettier-config
yarn add -D @igorskyflyer/prettier-config
npm i -D @igorskyflyer/prettier-config

After installation, reference it in the project's package.json.

package.json

{
  "prettier": "@igorskyflyer/prettier-config"
}

If overrides are needed, use a prettier.config.mjs instead:

prettier.config.mjs

import config from '@igorskyflyer/prettier-config'

/** @type {import('prettier').Config} */
export default {
  ...config
  // overrides
}

Strict TypeScript configuration with separate Node and browser presets.

  • πŸ”§ Strict TypeScript rules enabled by default
  • πŸ“¦ Separate configs for Node and browser environments
  • 🎯 ES2024 target - modern and future-ready
  • πŸ—‚οΈ Predefined src/, dist/ and test/ structure
  • πŸ” Catches unused locals, parameters and implicit any
  • πŸ—ΊοΈ Source maps and declaration maps included
  • ⚑ Zero-config setup - extend and go

Usage

Install it by executing any of the following, depending on the preferred package manager:

bun add -D @igorskyflyer/tsconfig
pnpm add -D @igorskyflyer/tsconfig
yarn add -D @igorskyflyer/tsconfig
npm i -D @igorskyflyer/tsconfig

After installation, reference it in the project's tsconfig.json.

Node (default) tsconfig.json

{
  "extends": "@igorskyflyer/tsconfig",
  "include": ["src/**/*"],
  "exclude": ["node_modules/**/*", "test/**/*", "dist/**/*"],
  "compilerOptions": {
    "rootDir": "./src",
    "outDir": "./dist"
  }
}

Node (explicit) tsconfig.json

{
  "extends": "@igorskyflyer/tsconfig/node",
  "include": ["src/**/*"],
  "exclude": ["node_modules/**/*", "test/**/*", "dist/**/*"],
  "compilerOptions": {
    "rootDir": "./src",
    "outDir": "./dist"
  }
}

Browser tsconfig.json

{
  "extends": "@igorskyflyer/tsconfig/browser",
  "include": ["src/**/*"],
  "exclude": ["node_modules/**/*", "test/**/*", "dist/**/*"],
  "compilerOptions": {
    "rootDir": "./src",
    "outDir": "./dist"
  }
}

Base only tsconfig.json

{
  "extends": "@igorskyflyer/tsconfig/base",
  "include": ["src/**/*"],
  "exclude": ["node_modules/**/*", "test/**/*", "dist/**/*"],
  "compilerOptions": {
    "rootDir": "./src",
    "outDir": "./dist"
  }
}

Motivation

Every project starts the same way - hours configuring linters, formatters, TypeScript and editor settings before writing a single line of actual code. These packages exist to eliminate that overhead entirely.

Each config reflects decisions made across real projects, iterated until they stopped surfacing false positives and started catching genuine issues. Nothing is included for completeness; everything earns its place.

The goal is a setup that enforces consistency without demanding attention - one extends, and the tooling gets out of the way.


Changelog

Read about the latest changes in the CHANGELOG.


License

Licensed under the MIT license.


Support

Engineering and documenting open-source projects
involves a significant investment of time.

If this project or its implementation has provided value,
support is greatly appreciated.

Donate to igorskyflyer

Thank you for supporting these efforts! πŸ™πŸ˜Š

Author

Created by Igor Dimitrijević (@igorskyflyer).

Sponsor this project

Contributors