package.json validator
Tools to validate package.json
files.
Usage
Command line
npm install package-json-validator -g
See pjv --help
for usage:
Options:
--filename, -f package.json file to validate [default: "package.json"]
--spec, -s which spec to use - npm|commonjs_1.0|commonjs_1.1 [default: "npm"]
--warnings, -w display warnings [default: false]
--recommendations, -r display recommendations [default: false]
--quiet, -q less output [default: false]
--help, -h, -? this help message [default: false]
Node.js
npm install package-json-validator
import { validate } from "package-json-validator";
validate(/* ... */);
API
validate(data, spec?, options?)
This function validates an entire package.json
and returns a list of errors, if
any violations are found.
Parameters
data
packageData object or a JSON-stringified version of the package data.spec
is eithernpm
,commonjs_1.0
, orcommonjs_1.1
options
is an object with the following:interface Options { recommendations?: boolean; // show recommendations warnings?: boolean; // show warnings }
Examples
Example using an object:
import { validate } from "package-json-validator";
const packageData = {
name: "my-package",
version: "1.2.3",
};
validate(packageData);
Example using a string:
import { validate } from "package-json-validator";
const text = JSON.stringify({
name: "packageJsonValidator",
version: "0.1.0",
private: true,
dependencies: {
"date-fns": "^2.29.3",
install: "^0.13.0",
react: "^18.2.0",
"react-chartjs-2": "^5.0.1",
"react-dom": "^18.2.0",
"react-material-ui-carousel": "^3.4.2",
"react-multi-carousel": "^2.8.2",
"react-redux": "^8.0.5",
"react-router-dom": "^6.4.3",
"react-scripts": "5.0.1",
redux: "^4.2.0",
"styled-components": "^5.3.6",
"web-vitals": "^2.1.4",
},
scripts: {
start: "react-scripts start",
},
eslintConfig: {
extends: ["react-app", "react-app/jest"],
},
browserslist: {
production: [">0.2%", "not dead", "not op_mini all"],
development: [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version",
],
},
});
const data = validate(text);
Output for above example:
console.log(data);
// {
// valid: true,
// warnings: [
// 'Missing recommended field: description',
// 'Missing recommended field: keywords',
// 'Missing recommended field: bugs',
// 'Missing recommended field: licenses',
// 'Missing recommended field: author',
// 'Missing recommended field: contributors',
// 'Missing recommended field: repository'
// ],
// recommendations: [
// 'Missing optional field: homepage',
// 'Missing optional field: engines'
// ]
}
validateBin(value)
This function validates the value of the bin
property of a package.json
.
It takes the value, and validates it against the following criteria.
- It should be of type
string
orobject
. - If it's a
string
, it should be a relative path to an executable file. - If it's an
object
, it should be a key to string value object, and the values should all be relative paths.
It returns a list of error messages if any violations are found.
Examples
import { validateBin } from "package-json-validator";
const packageData = {
bin: "./my-cli.js",
};
const errors = validateBin(packageData.bin);
import { validateBin } from "package-json-validator";
const packageData = {
bin: {
"my-cli": "./my-cli.js",
"my-dev-cli": "./dev/my-cli.js",
},
};
const errors = validateBin(packageData.bin);
Supported Specifications
Of course, there are multiple ones to follow, which makes it trickier.
Development
See .github/CONTRIBUTING.md
, then .github/DEVELOPMENT.md
.
Thanks! 💖
Contributors
Appreciation
Many thanks to @TechNickAI for creating the initial version and core infrastructure of this package! 💖
💝 This package was templated with
create-typescript-app
using the Bingo framework.