Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

danieldietrich/package-ignore

Repository files navigation

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

About

Cleanup your package.json before publishing

Resources

License

Stars

Watchers

Forks

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /