pkg-okchecks paths and scripts defined inpackage.jsonbefore you publish 👌
- Ensures paths defined in
main,bin,module,types,typings,es2015,browser, andexportsexist - Ensures those paths will be published, so they aren't left out by
filesor.npmignore - Ensures paths defined in
main,bin, andbrowserare relative - Ensures
binscripts use cross-platform line endings
npm install pkg-ok --save-dev// package.json
{
"main": "oops_this_file_doesnt_exist.js",
"scripts": {
"prepublishOnly": "... && pkg-ok"
}
}npm publish
# Error!
# Since main file doesn't exist, publish is blockedCheck the package.json in the current directory.
pkg-okCheck the package.json in a specific directory.
pkg-ok some/directory
pkg-ok some/directory/package.jsonCheck several packages, such as in a monorepo. Quote globs so pkg-ok expands them; node_modules is skipped and .gitignore is not read.
pkg-ok . packages/a packages/b
pkg-ok 'packages/*'
pkg-ok '**/package.json'Check additional package.json fields or bin files.
pkg-ok --field someField --bin script.shThe published check runs npm pack --dry-run --ignore-scripts, so npm must be installed. It's skipped for private packages and packages without a name or version. Turn it off with --no-published.
pkg-ok --no-publishedimport { pkgOk } from 'pkg-ok';
pkgOk(process.cwd(), {
fields: ['someAdditonalField'],
bin: ['someAdditionalScript.sh'],
});MIT