Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

package-json-validator

JoshuaKGoldberg246.1kMIT0.8.0TypeScript support: included

Tools to validate package.json files.

package.json, validator, package.json validator, lint, package.json linter

readme

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

💻
J Rob Gant
J Rob Gant

🐛
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

🐛
michael faith
michael faith

💻 🤔
sarahhagstrom
sarahhagstrom

💻

Appreciation

Many thanks to @TechNickAI for creating the initial version and core infrastructure of this package! 💖

changelog

0.7.3 (2024-12-31)

Bug Fixes

  • add support for catalog:, npm:, and workspace: protocol (#103) (91c139a), closes #71 #71

0.7.2 (2024-12-30)

Bug Fixes

0.7.1 (2024-12-17)

Bug Fixes

0.7.0 (2024-10-17)

Features

0.6.8 (2024-10-15)

Bug Fixes

  • demo files are now in demo/ (84f7689)

0.6.7 (2024-10-15)

Bug Fixes

  • add missing files to publish (fd3cdd1)

0.6.6 (2024-10-15)

Bug Fixes

  • also check peerDependencies for valid semver (#96) (b64e97a), closes #65
  • don't require version or name if package has "private": true (895f710)
  • remove references to expired domain (e09d248)