Package Exports
- package-json-validator
- package-json-validator/package.json
Readme
package.json validator
Tools to validate package.json files.
Usage
Command line
npm install package-json-validator -gSee 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-validatorimport { 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
datapackageData object or a JSON-stringified version of the package data.specis eithernpm,commonjs_1.0, orcommonjs_1.1optionsis 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
stringorobject. - 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-appusing the Bingo framework.