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

@homebound/eslint-config

v3.0.0

Published

Portable eslint-config for Homebound projects

Readme

@homebound/eslint-config

Portable ESLint configuration for Homebound projects. This README also contains recommendations for IDE configuration.

Install

yarn add -D eslint @homebound/eslint-config

Setting up eslint.config.mjs

We expose several configs based on the project type.

  • default - The default config that all projects should extend.
  • react - The config for React projects.
  • joist - The config for Joist projects. This assumes you're using Joist and node-pg-migrate for migrations.
  • graphql - The config for GraphQL projects.

To start, create a eslint.config.mjs file in the root of your project with the following content:

import homeboundConfig from "@homebound/eslint-config";

export default [
  ...homeboundConfig,
];

Then, for each additional config that matches your project, import it and add apply the rules to the config.

import homeboundConfig from "@homebound/eslint-config";
import homeboundGraphqlConfig from "@homebound/eslint-config/graphql.mjs";
import homeboundJoistConfig from "@homebound/eslint-config/joist.mjs";
import homeboundReactConfig from "@homebound/eslint-config/react.mjs";

export default [
  ...homeboundConfig,
  ...homeboundGraphqlConfig,
  ...homeboundJoistConfig,
  ...homeboundReactConfig,
];

Package Scripts

Next, add the following scripts to your package.json, assuming your code lives in a src/ directory:

{
  "scripts": {
    "lint": "eslint",
    "lint:fix": "eslint --fix"
  }
}

Code Formatting (Prettier)

This package does not include Prettier configuration. Code formatting is handled separately via @homebound/prettier-config. See that repository for setup instructions.

Pipeline (CircleCI)

It's advised to add a Linting step to your pipeline that will enforce errors. --quiet can be used to suppress warnings so only errors are reported. For CircleCI, add a run step such as this example:

jobs:
  tests:
    ...
    steps:
      ...
      - run: yarn lint --quiet
      ...

(Optional) Workspace Settings/Plugins

Finally it is recommended to lean into your IDE's tooling to work with ESLint to enforce consistent styling for a project across your team. For example, with VSCode, ESLint should be installed, then Added to Recommended Workspace Extensions via .vscode/extensions.json, and finally the Project should be configured to use ESLint to Format-on-Save:

// .vscode/settings.json
{
  "eslint.format.enable": true,
  "editor.defaultFormatter": "dbaeumer.vscode-eslint",
  "editor.formatOnSave": true
}

(Optional) Extra Tooling

You may choose to look in to Husky and lint-staged

Using a .editorconfig is also recommended, along with the associated plugins (Often included by default such as in Jetbrains tooling)

VSCode

If using the ESLint plugin, it must be instructed to lint GraphQL files. Additionally, the top-level editor.defaultFormatter wasn't enough to tell VSCode to lint GraphQL files, so that must be updated as well. In .vscode/settings.json, add:

  "eslint.validate": [
    "javascript",
    "javascriptreact",
    "typescript",
    "typescriptreact",
    "html",
    "vue",
    "markdown",
    "graphql"
  ],
  "[graphql]": {
    "editor.defaultFormatter": "dbaeumer.vscode-eslint"
  }

Homebound Rules

Keep in mind that "plugins" simply provide rules that may be used. "configs" are a collection of rules that are set up to critique our codebase and those are what we "extend" in our ESLint configs.

Homebound Style Guide

We maintain a Style Guide on Confluence which this project will (one day) attempt to align with as much as possible. For now, no attempt has been made to sync the two, but ideally that will change.

Contributing/Testing This Config Locally

To test this config locally against a project, first run yarn link in this project, then cd into the target project and run yarn link @homebound/eslint-config. Changes you make in here should reflect immediately in that project. For example, if you switch a warn to an error in one of the configs then yarn lint in that project, you should see the errors immediately.

To unlink, run yarn unlink @homebound/eslint-config and then run yarn install to revert to the published version.