Skip to content

rgant/package-json-validator

Β 
Β 

Repository files navigation

package.json validator

Tools to validate package.json files.

🀝 Code of Conduct: Kept πŸ“ License: MIT πŸ“¦ npm version

Supported Specifications

Of course, there are multiple ones to follow, which makes it trickier.

Usages

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 { PJV } from "package-json-validator";

PJV.validate(/* ... */);

API

PJV.validate(packageData[([, spec], options)]);

spec is either npm, commonjs_1.0, or commonjs_1.1

options is an object with the following available:

{
    warnings: true, // show warnings
    recommendations: true // show recommendations
}

Example:

const { PJV } = require("package-json-validator");

PJV.validate(data, spec, options);

Example1:

const { PJV } = require("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 = PJV.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'
//  ]
}

Contributors

Alan
Alan

πŸ€”
Amila Welihinda
Amila Welihinda

πŸ’»
Andreas Brekken
Andreas Brekken

πŸ’»
August Valera
August Valera

πŸ’»
Brett Zamir
Brett Zamir

πŸ€”
Chris Montgomery
Chris Montgomery

πŸ’»
Clay Carpenter
Clay Carpenter

πŸ’»
Dav Glass
Dav Glass

πŸ’»
Denis
Denis

πŸ’»
DjDCH
DjDCH

πŸ›
Eric Cornelissen
Eric Cornelissen

πŸ›
Gord Tanner
Gord Tanner

πŸ’»
Hemanth HM
Hemanth HM

πŸ’»
Jason Jarrett
Jason Jarrett

πŸ€”
Jatin Chopra
Jatin Chopra

πŸ’»
Josh Goldberg ✨
Josh Goldberg ✨

πŸ› πŸ’» πŸ“– πŸ€” 🚧 πŸ”§
L N M Anudeep
L N M Anudeep

πŸ’»
Linus UnnebΓ€ck
Linus UnnebΓ€ck

🚧
Matthew Holloway
Matthew Holloway

πŸ›
Nick Sullivan
Nick Sullivan

πŸ› πŸ’» πŸ“– πŸ€” 🚧
Norman Sue
Norman Sue

πŸ›
Peter deHaan
Peter deHaan

πŸ€” πŸ’»
Reggi
Reggi

πŸ€”
Sebastien Dubois
Sebastien Dubois

πŸ’»
Simon
Simon

πŸ€”
Slava Fomin II
Slava Fomin II

πŸ€”
Stephen Zhou
Stephen Zhou

πŸ’»
Veniamin Krol
Veniamin Krol

πŸ’»
gramergrater
gramergrater

πŸ›
sarahhagstrom
sarahhagstrom

πŸ’»

Appreciation

Many thanks to @TechNickAI for creating the initial version and core infrastructure of this package! πŸ’–

About

Tools to validate package.json files

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%