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

package-ignore

v1.0.3

Published

The missing tool to clean up the package.json file before publishing.

Downloads

26

Readme

Package ignore

The missing tool to clean up the package.json file before publishing.

Installation

# Install package-ignore as a devDependency,
# available as command `npx pi`
npm i -D package-ignore

Usage

  • npx pi clean - Clean the package.json file based on .package-ignore patterns
  • npx pi clean --dry-run - Preview what would be cleaned without making changes
  • npx pi restore - Restore the package.json from backup
  • npx pi --help - Show help information

Package ignore (pi) is not opinionated about your release workflow. It simply provides a way to clean up and restore the package.json file.

The npx pi clean command will look for the package.json file in the current directory. Additionally, it will resolve the .package-ignore file (see Syntax), starting in the current directory, walking up the directory tree. If no .package-ignore file is found, the default pattern devDependencies will be used. A backup file package-ignore-backup.json will be created in the current directory. Use npx pi restore to restore the package.json from backup.

Example for a simple integration with npm publish:

{
  "scripts": {
    "prepack": "pi clean",
    "postpack": "pi restore"
  }
}

Here, the tarball will contain the cleaned up package.json file. The scripts prepack and postpack will be triggered by npm pack and npm publish, respectively.

Syntax

The .package-ignore file is a simple text file that contains a list of definitions. Each non-empty line (modulo comments) is a definition.

Comments

  • All content after a (unescaped) hash # is ignored.

Special characters

  • A dot . separates JSON keys in a line.
  • A line consisting of only * ignores the whole package.json content.
  • A line starting with an exclamation mark ! defines an allowed JSON path and may override (a part of) an ignored JSON path.

Escaping

  • A backslash \ is used to escape characters, including itself.
  • The dot . and the hash # need to be escaped if they are part of a key name.
  • If the package.json has a top-level key * or a top-level key starting with !, those first characters must be escaped.
  • Escaping other key name characters has no effect.

Whitespace

  • Technically, leading and trailing whitespace are also allowed in JSON key names; however, whitespace is trimmed by the parser for definitions and key names.

Examples

The allowlist pattern (strict):

* # '*' ignores all package.json content except...
!scripts.build:examples # ...those patterns prefixed with '!'

# Will result in a package.json with the following content:
# {
#   "scripts": {
#     "build:examples": "..."
#   }
# }

The ignore pattern (open):

devDependencies # This will ignore the "devDependencies" key
scripts.build # This will ignore the "build" script
!files # Keeping the "files" key is important for creating the tarball