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 🙏

© 2025 – Pkg Stats / Ryan Hefner

@kcsommers/web-tooling

v1.0.0

Published

A collection of reusable, standardized configurations for web development tools.

Downloads

93

Readme

web-tooling

A collection of reusable, standardized configurations for web development tools used at Peerspace. These configs are intended to be used across frontend services and help to ensure consistency in linting, formatting, type safety etc when jumping between repositories.

Table of contents


🚀 Getting Started

To initialize your project with Peerspace's standard configuration for ESLint, Prettier, and TypeScript:

1. Install the package

npm install @kcsommers/web-tooling

2. Run the Init Command

The package comes with a CLI tool you can use to initialize your project with the proper tooling. After installing, run the init command:

npx kcsommers-web-tooling init

You'll be prompted to select:

  • Your framework (e.g. Next.js or Vanilla React)

  • Whether you're using TypeScript

Based on your answers, the CLI will:

  • Copy config templates for ESLint, Prettier, and (optionally) TypeScript

  • Set up recommended .vscode/settings.json

3. Install IDE Extensions

In order to get real-time linting and formatting in VS Code or Cursor make sure you have these extensions installed:

NOTE: If you're using a different IDE, you'll need to adapt this setup to work in your environment.


Config Options

ESLint

When you import an eslint config from this package, you're actually importing a function. Each config function accept an optional options argument which allows you to specify project specific settings. These options will merge with or override the options provided by the base config.

import { Linter } from "eslint";

export type BaseEslintConfigOptions = {
  ignores?: Linter.Config["ignores"];
  rules?: Linter.Config["rules"];
  globals?: Linter.Globals | undefined;
  plugins?: Linter.Config["plugins"];
};

declare const baseEslintConfig: (
  options?: BaseEslintConfigOptions,
) => Linter.Config[];

Typescript

The base tsconfig only includes a compilerOptions field, and does not specify a baseUrl, includes or excludes fields, so you'll need to make sure your local tsconfig includes them. Any compilerOptions fields you add to your local config will merge with or override what is set by the base config.

Its also worth nothing that tsconfig.base.json sets the noEmit property to true. This is because the assumption is that most of our projects will be compiled using a tool other than typescript. If you're actually using the tsc command to build js files, you'll need to override the noEmit field to false.

Example tsconfig.json

{
  "extends": "@peerspace/web-tooling-configs/typescript/tsconfig.base.json",
  "compilerOptions": {
    "baseUrl": "."
  },
  "include": ["src/**/*.ts"],
  "exclude": ["node_modules", "dist"]
}

Working on web-tooling

To work on this package while testing the changes in a consuming app, use npm link.

From the package root, run

npm link

This will create a symlink that consuming apps will reference from their node_modules. To use the local version of the package in a consuming app, run this command from the root of the app:

npm link @kcsommers/web-tooling

You can then run the package's dev script to watch for file changes and have them automatically compiled to the dist folder and picked up in the consuming app.

npm run dev