Package Exports
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (package-ignore) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
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-ignoreUsage
npx pi clean- Clean the package.json file based on.package-ignorepatternsnpx pi clean --dry-run- Preview what would be cleaned without making changesnpx pi restore- Restore thepackage.jsonfrom backupnpx 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 wholepackage.jsoncontent. - 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.jsonhas 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