JSPM

  • Created
  • Published
  • Downloads 161444
  • Score
    100M100P100Q158916F
  • License MIT

Tools to validate package.json files.

Package Exports

  • package-json-validator
  • package-json-validator/package.json

Readme

package.json validator

Tools to validate package.json files.

πŸ‘ͺ All Contributors: 35 🀝 Code of Conduct: Kept πŸ§ͺ Coverage πŸ“ License: MIT πŸ“¦ npm version πŸ’ͺ TypeScript: Strict

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 either npm, commonjs_1.0, or commonjs_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 or object.
  • 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

Alan
Alan

πŸ€”
Amila Welihinda
Amila Welihinda

πŸ’»
Andreas Brekken
Andreas Brekken

πŸ’»
August Valera
August Valera

πŸ’»
Azat S.
Azat S.

πŸ’»
Brett Zamir
Brett Zamir

πŸ€”
Chris Montgomery
Chris Montgomery

πŸ’»
Clay Carpenter
Clay Carpenter

πŸ’»
Daniel Bayley
Daniel Bayley

πŸ›
Dav Glass
Dav Glass

πŸ’»
Denis
Denis

πŸ’»
DjDCH
DjDCH

πŸ›
Eric Cornelissen
Eric Cornelissen

πŸ›
Gord Tanner
Gord Tanner

πŸ’»
Hemanth HM
Hemanth HM

πŸ’»
J Rob Gant
J Rob Gant

πŸ›
Jason Jarrett
Jason Jarrett

πŸ€”
Jason Karns
Jason Karns

πŸ€”
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

πŸ›
michael faith
michael faith

πŸ’» πŸ€” πŸš‡ πŸ”§ 🚧
sarahhagstrom
sarahhagstrom

πŸ’»

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.