Skip to content

Latest commit

 

History

History
198 lines (164 loc) · 15.3 KB

README.md

File metadata and controls

198 lines (164 loc) · 15.3 KB

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! 💖