npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@igorskyflyer/tsconfig

v1.0.2

Published

🔧 Opinionated, reusable TSConfig base for modern TypeScript projects by igorskyflyer. 🧠

Readme

Table of Contents

Features

  • 🔧 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:

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

Then extend the preferred config in tsconfig.json:

Node (default):

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

Node (explicit):

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

Browser:

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

Base only:

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

[!NOTE] include, exclude, rootDir and outDir are project-specific and must be defined locally.

Implementation

All configs extend base, which defines the shared structure and strict rules.

Base

{
  "compilerOptions": {
    "declaration": true,      // generate .d.ts files
    "declarationMap": true,   // generate .d.ts.map files
    "sourceMap": true,        // generate .js.map files
    "verbatimModuleSyntax": true, // enforce explicit import/export types
    "strict": true,               // enable all strict checks
    "noUnusedLocals": true,       // error on unused local variables
    "noUnusedParameters": true,   // error on unused function parameters
    "noImplicitAny": true,        // error on implicit 'any' types
    "noImplicitReturns": true,    // error on missing return statements
    "skipLibCheck": true,         // skip type-checking of .d.ts files
    "forceConsistentCasingInFileNames": true, // enforce consistent file casing
    "noEmitOnError": true         // skip emit if type errors exist
  }
}

Node

Extends base and adds Node environment targeting:

{
  "extends": "./tsconfig.base.json",
  "compilerOptions": {
    "target": "ES2024",          // modern JS output
    "lib": ["ES2024"],           // modern built-in types
    "module": "NodeNext",        // Node ESM-compatible modules
    "moduleResolution": "NodeNext" // Node ESM module resolution
  }
}

Browser

Extends base and adds browser environment targeting:

{
  "extends": "./tsconfig.base.json",
  "compilerOptions": {
    "target": "ES2024",                        // modern JS output
    "lib": ["ES2024", "DOM", "DOM.Iterable"],  // modern + DOM types
    "module": "ESNext",                        // bundler-compatible modules
    "moduleResolution": "Bundler"              // bundler module resolution
  }
}

Motivation

Managing TypeScript configuration across multiple projects is tedious and error-prone. Each project ends up with its own tsconfig.json, slightly different, slightly outdated, with no single source of truth.

@igorskyflyer/tsconfig solves this by providing one opinionated, versioned config that propagates across all projects via a simple extends. Update once, apply everywhere - just like all packages of the @igorskyflyer ecosystem do!

Changelog

Read about the latest changes in the CHANGELOG.

License

Licensed under the MIT license.

Support

Related

@igorskyflyer/duoscribi

✒ DúöScríbî allows you to convert letters with diacritics to regular letters. 🤓

@igorskyflyer/zep

🧠 Zep is a zero-dependency, efficient debounce module. ⏰

@igorskyflyer/common-types

🔦 Provides frequently used types for your TypeScript projects. 🦄

@igorskyflyer/zitto

🤫 Zitto - quiet config, loud clarity. A zero-dependency TypeScript/JavaScript helper for merging defaults and options across Node, Deno, Bun, and browsers. 🍯

@igorskyflyer/magic-queryselector

🪄 A TypeScript-types patch for querySelector/querySelectorAll, make them return types you expect them to! 🔮

Author

Created by Igor Dimitrijević (@igorskyflyer).