What is npm-package-json-lint?
npm-package-json-lint is a tool for linting package.json files, ensuring they adhere to a defined set of rules and best practices. It helps maintain consistency and correctness in package.json files across projects.
What are npm-package-json-lint's main functionalities?
Linting package.json files
This feature allows you to define a set of rules for linting package.json files. The code sample shows a configuration file that extends the default configuration and specifies rules for the name type, version format, and requiring an author field.
module.exports = {
extends: 'npm-package-json-lint-config-default',
rules: {
'name-type': 'error',
'version-format': 'error',
'require-author': 'error'
}
};
Custom rule definitions
You can define custom rules to enforce specific requirements in your package.json files. The code sample demonstrates how to restrict certain dependencies and require the scripts field.
module.exports = {
rules: {
'no-restricted-dependencies': ['error', ['lodash', 'underscore']],
'require-scripts': 'error'
}
};
Command-line interface
The package provides a CLI for linting package.json files. The code sample shows how to run the linter using npx and a specified configuration file.
npx npm-package-json-lint . --config .npmpackagejsonlintrc.json
Other packages similar to npm-package-json-lint
eslint-plugin-json
eslint-plugin-json is an ESLint plugin that allows you to lint JSON files, including package.json. It provides a way to enforce JSON-specific rules using the familiar ESLint framework. Compared to npm-package-json-lint, it integrates JSON linting into the broader ESLint ecosystem.
jsonlint
jsonlint is a pure JavaScript library for validating and formatting JSON data. While it doesn't provide package.json-specific rules, it ensures that JSON files are syntactically correct. It is more general-purpose compared to npm-package-json-lint.
json-schema
json-schema is a library for validating JSON documents against a JSON Schema. It can be used to enforce a schema for package.json files, ensuring they adhere to a predefined structure. Unlike npm-package-json-lint, it focuses on schema validation rather than linting rules.
npm package json lint
A package.json linter for Node projects
What is package json lint?
npm package json lint helps enforce standards for your package.json file.
Currently it can check for:
- validity of data types in nodes. Ex:
name
should always be a string. - whether a string is a lowercase
- whether a version number is a valid
- the presence of a given module
- the presence of a pre-release version of a module
How do I install it?
First thing first, let's make sure you have the necessary pre-requisites.
System Dependencies
Node
- node - v4.2.0+
- npm - v2.14.7+
Use the cli
npm install npm-package-json-lint -g
Commands and configuration
Command | Alias | Description | README |
---|
pjl-cli --help | -h | Lists supported CLI options | |
pjl-cli --version | -v | Lists the current version number | |
pjl-cli --file | --f | File path including name. Defaults to package.json | |
pjl-cli --rule | --r | Valid rule name to check. Defaults to nothing | |
pjl-cli --rules-file | --c | File path of .npmpackagejsonlintrc | |
pjl-cli --ignore-warnings | --w | Ignore warnings | |
Examples
Run a specific rule, author-valid-values, on a file relative to the current working directory.
pjl-cli -f "../relative-path/package.json" -r "author-valid-values: true"
Run a specific rule, author-valid-values, ignoring warnings on a file relative to the current working directory.
pjl-cli -f "../relative-path/package.json" -r "author-valid-values: true" --ignore-warnings
Run using the config in .npmpackagejsonlintrc
on a file relative to the current working directory.
pjl-cli -f "../relative-path/package.json" -c "./.npmpackagejsonlintrc"
Run using the default config on a file relative to the current working directory
pjl-cli -f "../relative-path/package.json"
Lint Rules
npm package json lint has a configurable set of rules. Each rule contains the following properties:
- ID - example: author-required
- Type - error or warning
- Node - example: author
- Message - example: author is required
- Rule Type - example: required
As mentioned in the "Commands and configuration" section there are two ways to specify rule sets. The first is using --rule
to specify a given rule. This will run package json lint with just this rule. The second is using --rules-file
to specify a JSON file, named .npmpackagejsonlintrc
, to run a set of rules. If neither of the options above are specified then package json lint looks for a global .npmpackagejsonlintrc
file in the root of your user directory. Finally, if a global .npmpackagejsonlintrc
file doesn't exist then all rules are enabled by default.
Contributing
Please see CONTRIBUTING.md.
Release History
- 2016-04-20 - v0.1.0: First release
License
Copyright (c) 2016 Thomas Lindner. Licensed under the MIT license.