publint

Lint packaging errors. Ensure compatibility across environments.

Try it online


This package contains a CLI and API to lint packages locally. The package to be linted must exist and be built locally for the lint to succeed. To test other npm packages, try https://publint.dev. ## Usage ### CLI ```bash # Lint your library project $ npx publint # Lint a dependency $ npx publint ./node_modules/some-lib # Lint your project's dependencies based on package.json $ npx publint deps ``` Use `npx publint --help` for more information. ### API ```js import { publint } from 'publint' const { messages } = await publint({ /** * Path to your package that contains a package.json file. * Defaults to `process.cwd()` in node, `/` in browser. */ pkgDir: './path/to/package', /** * A virtual file-system object that handles fs/path operations. * This field is required if you're using in the browser. */ vfs: createCustomVfsObj(), /** * The level of messages to log (default: `'suggestion'`). * - `suggestion`: logs all messages * - `warning`: logs only `warning` and `error` messages * - `error`: logs only `error` messages */ level: 'warning', /** * Report warnings as errors. */ strict: true }) console.log(messages) ``` Extra utilities are exported under `publint/utils`: ```js import { formatMessage } from 'publint/utils' import fs from 'node:fs/promises' const pkg = JSON.parse( await fs.readFile('./path/to/package/package.json', 'utf8') ) for (const message of messages) { // Prints default message in Node.js. Always a no-op in browsers. // Useful for re-implementing the CLI in a programmatic way. console.log(formatMessage(message, pkg)) } ``` ## License MIT