Skip to content
abrahamPublic

About

๐Ÿ‘Œ Checks paths and scripts defined in package.json before you publish

Topics

Resources

Stars

237 stars

Watchers

0 watching

Forks

Latest commit

ย 

History

311 Commits

Folders and files

Repository files navigation

pkg-ok Build status npm

pkg-ok checks paths and scripts defined in package.json before you publish ๐Ÿ‘Œ

  • Ensures paths defined in main, bin, module, types, typings, es2015, browser, and exports exist
  • Ensures those paths will be published, so they aren't left out by files or .npmignore
  • Ensures paths defined in main, bin, and browser are relative
  • Ensures bin scripts use cross-platform line endings

Usage

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 blocked

CLI

Check the package.json in the current directory.

pkg-ok

Check the package.json in a specific directory.

pkg-ok some/directory
pkg-ok some/directory/package.json

Check 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.sh

The 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-published

API

import { pkgOk } from 'pkg-ok';

pkgOk(process.cwd(), {
  fields: ['someAdditonalField'],
  bin: ['someAdditionalScript.sh'],
});

License

MIT

About

๐Ÿ‘Œ Checks paths and scripts defined in package.json before you publish

Topics

Resources

Stars

237 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages