Detalhes do pacote

package-json-validator

JoshuaKGoldberg614.6kMIT0.59.0

Tools to validate package.json files.

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

readme (leia-me)

package.json validator

Tools to validate package.json files.

👪 All Contributors: 39 🤝 Code of Conduct: Kept 🧪 Coverage 📝 License: MIT 📦 npm version 💪 TypeScript: Strict

Usage

npm install package-json-validator
import { validate } from "package-json-validator";

validate(/* ... */);

For tools that run these validations, see:

Result Types

Following are the types involved in the return type of our granular validate* functions.

Result

The Result type, is the common top-level return type for all of our granular validate* functions. It provides rich information about the nature of the issues encountered as part of validating. For complex objects like exports, its tree structure can give information on which parts of the structure have issues.

errorMessages: string[]

The full collection of error messages (including errors from child element). This consists of the Issue.message for all of the items in this Result's issues, as well as the messages of all descendent issues.

issues: Issue[]

Collection of issues for this object (property or array element).

childResults: ChildResult[]

Collection of result objects for child elements (either properties or array elements), if this property is an object or array.

ChildResult extends Result

Result object for a child (either a property in an object or an element of an array).

index: number

The index of this property in relation to its parent's collection (properties or array elements).

Issue

message: string

The message with information about this issue.

API

validate(data, 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.
  • 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'
//  ]
// }

validateAuthor(value)

This function validates the value of the author property of a package.json. It takes the value, and validates it against the following criteria.

  • the property is either a string or an object
  • if it's an object, it should include a name field and, optionally, email and / or url fields.
  • if present, the email and url fields should be valid email and url, respectively.

It returns a Result object (See Result Types).

Examples

import { validateAuthor } from "package-json-validator";

const packageData = {
    author: {
        email: "b@rubble.com",
        name: "Barney Rubble",
        url: "http://barnyrubble.tumblr.com/",
    },
};

const result = validateAuthor(packageData.author);
import { validateAuthor } from "package-json-validator";

const packageData = {
    author: "Barney Rubble <b@rubble.com> (http://barnyrubble.tumblr.com/)",
};

const result = validateAuthor(packageData.author);

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 Result object (See Result Types).

Examples

import { validateBin } from "package-json-validator";

const packageData = {
    bin: "./my-cli.js",
};

const result = 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 result = validateBin(packageData.bin);

validateBundleDependencies(value)

This function validates the value of the bundleDependencies property of a package.json. It takes the value, and validates it against the following criteria.

  • the property is either an array or a boolean
  • if it's an array, all items should be strings

It returns a Result object (See Result Types).

Examples

import { validateBundleDependencies } from "package-json-validator";

const packageData = {
    bundleDependencies: ["renderized", "super-streams"],
};

const result = validateBundleDependencies(packageData.bundleDependencies);

validateConfig(value)

This function validates the value of the config property of a package.json. It takes the value, and validates that it's an object.

It returns a Result object (See Result Types).

Examples

import { validateConfig } from "package-json-validator";

const packageData = {
    config: {
        debug: true,
        host: "localhost",
        port: 8080,
    },
};

const result = validateConfig(packageData.config);

validateContributors(value)

This function validates the value of the contributors property of a package.json. It takes the value, and validates it against the following criteria.

  • the property is an Array of objects
  • each object in the array should be a "person" object with at least a name and optionally email and url
  • the email and url properties, if present, should be valid email and URL formats.

It returns a Result object (See Result Types).

Examples

import { validateContributors } from "package-json-validator";

const packageData = {
    contributors: [
        {
            email: "b@rubble.com",
            name: "Barney Rubble",
            url: "http://barnyrubble.tumblr.com/",
        },
    ],
};

const result = validateContributors(packageData.contributors);

validateCpu(value)

This function validates the value of the cpu property of a package.json. It takes the value, and validates it against the following criteria.

  • the property is an array
  • all items in the array should be one of the following:

"arm", "arm64", "ia32", "loong64", "mips", "mipsel", "ppc64", "riscv64", "s390", "s390x", "x64"

[!NOTE] These values are the list of possible process.arch values documented by Node.

It returns a Result object (See Result Types).

Examples

import { validateCpu } from "package-json-validator";

const packageData = {
    cpu: ["x64", "ia32"],
};

const result = validateCpu(packageData.cpu);

validateDependencies(value)

Also: validateDevDependencies(value), validateOptionalDependencies(value), and validatePeerDependencies(value)

These functions validate the value of their respective dependency property. They take the value, and validate it against the following criteria.

  • It should be of type an object.
  • The object should be a record of key value pairs
  • For each property, the key should be a valid package name, and the value should be a valid version

It returns a Result object (See Result Types).

Examples

import { validateDependencies } from "package-json-validator";

const packageData = {
    dependencies: {
        "@catalog/package": "catalog:",
        "@my/package": "^1.2.3",
        "@workspace/package": "workspace:^",
    },
};

const result = validateDependencies(packageData.dependencies);

validateDescription(value)

This function validates the value of the description property of a package.json, checking that the value is a non-empty string.

It returns a Result object (See Result Types).

Examples

import { validateDescription } from "package-json-validator";

const packageData = {
    description: "The Fragile",
};

const result = validateDescription(packageData.description);

validateDirectories(value)

This function validates the value of the directories property of a package.json. It takes the value, and validates it against the following criteria.

  • the property is an object
  • its keys are non-empty strings
  • its values are all non-empty strings

It returns a Result object (See Result Types).

Examples

import { validateDirectories } from "package-json-validator";

const packageData = {
    directories: {
        bin: "dist/bin",
        man: "docs",
    },
};

const result = validateDirectories(packageData.directories);

validateEngines(value)

This function validates the value of the engines property of a package.json. It takes the value, and validates it against the following criteria.

  • It should be of type object.
  • It should be a key to string value object, and the values should all be non-empty.

It returns a Result object (See Result Types).

Examples

import { validateEngines } from "package-json-validator";

const packageData = {
    engines: {
        node: "^20.19.0 || >=22.12.0",
    },
};

const result = validateEngines(packageData.engines);

validateExports(value)

This function validates the value of the exports 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 path to an entry point.
  • If it's an export condition object, its properties should have values that are either a path to an entry point, or another exports condition object.

It returns a Result object (See Result Types).

Examples

import { validateExports } from "package-json-validator";

const packageData = {
    exports: "./index.js",
};

const result = validateExports(packageData.exports);
import { validateExports } from "package-json-validator";

const packageData = {
    exports: {
        ".": {
            types: "./index.d.ts",
            default: "./index.js",
        },
        "./secondary": {
            types: "./secondary.d.ts",
            default: "./secondary.js",
        },
    },
};

const result = validateExports(packageData.exports);

validateFiles(value)

This function validates the value of the files property of a package.json. It takes the value, and validates it against the following criteria.

  • the property is an array
  • all items in the array should be non-empty strings

It returns a Result object (See Result Types).

Examples

import { validateFiles } from "package-json-validator";

const packageData = {
    files: ["dist", "CHANGELOG.md"],
};

const result = validateFiles(packageData.files);

validateHomepage(value)

This function validates the value of the homepage property of a package.json, checking that the value is a string containing a valid url.

It returns a Result object (See Result Types).

Examples

import { validateHomepage } from "package-json-validator";

const packageData = {
    homepage: "The Fragile",
};

const result = validateDescription(packageData.homepage);

validateKeywords(value)

This function validates the value of the keywords property of a package.json. It takes the value, and validates it against the following criteria.

  • the property is an array
  • all items in the array should be non-empty strings

It returns a Result object (See Result Types).

Examples

import { validateKeywords } from "package-json-validator";

const packageData = {
    keywords: ["eslint", "package.json"],
};

const result = validateKeywords(packageData.keywords);

validateLicense(value)

This function validates the value of the license property of a package.json. It takes the value, and validates it using validate-npm-package-license, which is the same package that npm uses.

It returns a Result object (See Result Types).

Examples

import { validateLicense } from "package-json-validator";

const packageData = {
    license: "MIT",
};

const result = validateLicense(packageData.license);

validateMain(value)

This function validates the value of the main property of a package.json, checking that the value is a non-empty string.

It returns a Result object (See Result Types).

Examples

import { validateMain } from "package-json-validator";

const packageData = {
    main: "index.js",
};

const result = validateMain(packageData.main);

validateMan(value)

This function validates the value of the man property of a package.json. It takes the value, and validates it against the following criteria.

  • the property is either a string or an array of strings
  • the string(s) must end in a number (and optionally .gz)

It returns a Result object (See Result Types).

Examples

import { validateMan } from "package-json-validator";

const packageData = {
    man: ["./man/foo.1", "./man/bar.1"],
};

const result = validateMan(packageData.man);

validateName(value)

This function validates the value of the name property of a package.json. It takes the value, and validates it using validate-npm-package-name, which is the same package that npm uses.

It returns a Result object (See Result Types).

Examples

import { validateName } from "package-json-validator";

const packageData = {
    name: "some-package",
};

const result = validateName(packageData.name);

validateOs(value)

This function validates the value of the os property of a package.json. It takes the value, and validates it against the following criteria.

  • the property is an array
  • all items in the array should be one of the following:

"aix", "android", "darwin", "freebsd", "linux", "openbsd", "sunos", and "win32"

[!NOTE] These values are the list of possible process.platform values documented by Node.

It returns a Result object (See Result Types).

Examples

import { validateOs } from "package-json-validator";

const packageData = {
    os: ["linux", "win32"],
};

const result = validateOs(packageData.os);

validatePrivate(value)

This function validates the value of the private property of a package.json. It takes the value, and checks that it's a boolean.

It returns a Result object (See Result Types).

Examples

import { validatePrivate } from "package-json-validator";

const packageData = {
    private: true,
};

const result = validatePrivate(packageData.private);

validatePublishConfig(value)

This function validates the value of the publishConfig property of a package.json. It takes the value, and validates it against the following criteria.

  • the property is an object
  • if any of the following properties are present, they should conform to the type defined by the package manager
    • access
    • bin
    • cpu
    • directory
    • exports
    • main
    • provenance
    • tag

[!NOTE] These properties are a (non-exhaustive) combination of those supported by npm, pnpm, and yarn.

It returns a Result object (See Result Types).

Examples

import { validatePublishConfig } from "package-json-validator";

const packageData = {
    publishConfig: {
        provenance: true,
    },
};

const result = validatePublishConfig(packageData.publishConfig);

validateRepository(value)

This function validates the value of the repository property of a package.json. It takes the value, and validates it against the following criteria.

  • It should be of type object or string.
  • If it's an object, it should have type, url, and optionally directory.
  • type and directory (if present) should be non-empty strings
  • url should be a valid repo url
  • If it's a string, it should be the shorthand repo string from a supported provider.

It returns a Result object (See Result Types).

Examples

import { validateRepository } from "package-json-validator";

const packageData = {
    repository: {
        type: "git",
        url: "git+https://github.com/JoshuaKGoldberg/package-json-validator.git",
        directory: "packages/package-json-validator",
    },
};

const result = validateRepository(packageData.repository);
import { validateRepository } from "package-json-validator";

const packageData = {
    repository: "github:JoshuaKGoldberg/package-json-validator",
};

const result = validateRepository(packageData.repository);

validateScripts(value)

This function validates the value of the scripts property of a package.json. It takes the value, and validates it against the following criteria.

  • the property is an object
  • its keys are non-empty strings
  • its values are all non-empty strings

It returns a Result object (See Result Types).

Examples

import { validateScripts } from "package-json-validator";

const packageData = {
    scripts: {
        build: "rollup -c",
        lint: "eslint .",
        test: "vitest",
    },
};

const result = validateScripts(packageData.scripts);

validateSideEffects(value)

This function validates the value of the sideEffects property of a package.json. It takes the value, and validates it against the following criteria.

  • The value is either a boolean or an Array.
  • If it's an array, all items should be non-empty strings.

It returns a Result object (See Result Types).

Examples

import { validateSideEffects } from "package-json-validator";

const packageData = {
    sideEffects: false,
};

const result = validateSideEffects(packageData.sideEffects);

validateType(value)

This function validates the value of the type property of a package.json. It takes the value, and validates it against the following criteria.

  • the property is a string
  • its value is either 'commonjs' or 'module'

It returns a Result object (See Result Types).

Examples

import { validateType } from "package-json-validator";

const packageData = {
    type: "module",
};

const result = validateType(packageData.type);

validateVersion(value)

This function validates the value of the version property of a package.json. It takes the value, and validates it using semver, which is the same package that npm uses.

It returns a Result object (See Result Types).

Examples

import { validateVersion } from "package-json-validator";

const packageData = {
    version: "1.2.3",
};

const result = validateVersion(packageData.version);

validateWorkspaces(value)

This function validates the value of the workspaces property of a package.json. It takes the value, and validates it against the following criteria.

  • the property is an array
  • all items in the array should be non-empty strings

It returns a Result object (See Result Types).

Examples

import { validateWorkspaces } from "package-json-validator";

const packageData = {
    workspaces: ["./app", "./packages/*"],
};

const result = validateWorkspaces(packageData.cpu);

Specification

This package uses the npm spec along with additional supporting documentation from node, as its source of truth for validation.

Deprecation Policy

We never want to remove things, when we're building them! But the reality is that libraries evolve and deprecations are a fact of life. Following are the different timeframes that we've defined as it relates to deprecating APIs in this project.

RFC Timeframe (6 weeks)

When some aspect of our API is going to be deprecated (and eventually removed), it must initially go through an RFC phase. Whoever's motivating the removal of the api, should create an RFC issue explaining the proposal and inviting feedback from the community. That RFC should remain active for at least 6 weeks. The RFC text should make clear what the target date is for closing the RFC. Once the RFC period is over, if the removal is still moving forward, the API(s) should be officially deprecated.

Removal Timeframe (6 months)

Once an API has been marked as deprecated, it will remain intact for at least 6 months. After 6 months from the date of deprecation, the API is subject to removal.

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.

💻
Brad Jorsch
Brad Jorsch

💻
Brett Zamir
Brett Zamir

🤔
Chris Montgomery
Chris Montgomery

💻
Clay Carpenter
Clay Carpenter

💻
Daniel Bayley
Daniel Bayley

🐛
Dav Glass
Dav Glass

💻
Denis
Denis

💻
DjDCH
DjDCH

🐛
Eli
Eli

🐛 💻
Eric Cornelissen
Eric Cornelissen

🐛
Gord Tanner
Gord Tanner

💻
Hannah Wolfe
Hannah Wolfe

🤔
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

🐛
Morrison Cole
Morrison Cole

🐛 💻
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.

changelog (log de mudanças)

Changelog

0.59.0 (2025-11-17)

Features

  • validateSideEffects: add function for validating sideEffects (#571) (60e66da), closes #570

0.58.0 (2025-11-11)

Features

  • validateContributors: add function for validating contributors (#560) (0274358), closes #555

0.57.0 (2025-11-10)

Features

  • validatePublishConfig: add function for validating publishConfig (#545) (811d658), closes #378

0.56.0 (2025-11-10)

Features

0.55.0 (2025-11-10)

Features

  • validateCpu: add validation for specific arch types (#543) (8011395), closes #540

0.54.0 (2025-11-10)

Features

  • validateRepository: add function for validating repository (#554) (87b364e), closes #538

0.53.0 (2025-11-10)

Features

  • remove validations for deprecated / unsupported properties (#553) (8b1c558), closes #537
  • validateName: add function for validating name (#551) (f984c4a), closes #536

0.52.0 (2025-11-10)

Features

  • validateEngines: add function for validating engines (#550) (eec9a3e), closes #535

0.51.0 (2025-11-10)

Features

  • validateWorkspaces: add function for validating workspaces (#547) (92e623b), closes #380

0.50.0 (2025-11-06)

Features

  • validateMan: add function for validating main (#539) (998a344), closes #375

0.49.0 (2025-11-06)

Features

  • validateMain: add function for validating main (#534) (d496cd2), closes #374

0.48.0 (2025-11-06)

Features

  • validateKeywords: add function for validating keywords (#533) (f5edd86), closes #373

0.47.0 (2025-11-06)

Features

  • validatePrivate: add function for validating private (#541) (ec96d4c), closes #377

0.46.0 (2025-11-06)

Features

0.45.0 (2025-11-05)

Features

  • validateHomepage: add function for validating homepage (#532) (510f2d4), closes #372

0.44.0 (2025-11-05)

Features

  • validateFiles: add function for validating files (#531) (e9e8cf5), closes #371

0.43.0 (2025-11-03)

Features

0.42.0 (2025-11-03)

Features

0.41.0 (2025-11-03)

Features

0.40.0 (2025-11-03)

Features

0.39.0 (2025-11-03)

Features

0.38.0 (2025-11-03)

Features

0.37.0 (2025-11-03)

Features

0.36.0 (2025-11-03)

Features

0.35.0 (2025-11-03)

Features

  • validateConfig: adopt new Result return type (#515) (f709b8c), closes #475

0.34.0 (2025-11-03)

Features

  • validateBundleDependencies: adopt new Result return type (#513) (4a31e00), closes #474

0.33.0 (2025-10-27)

Features

0.32.1 (2025-10-23)

Bug Fixes

0.32.0 (2025-10-22)

Features

  • validateAuthor: adopt new Result return type (#489) (ac69080), closes #472

0.31.0 (2025-10-09)

Features

0.30.1 (2025-10-08)

Bug Fixes

  • validateDependencies rule should allow patch protocol (#470) (83dc957), closes #426

0.30.0 (2025-08-22)

Features

0.29.1 (2025-08-15)

Bug Fixes

0.29.0 (2025-08-12)

Features

  • validateExports: add function for validating exports (#395) (8460dcc), closes #362

0.28.0 (2025-08-07)

Features

  • validateDirectories: add function for validating directories (#384) (ba712cb), closes #354

0.27.0 (2025-08-05)

Features

  • add additional validate*Dependencies functions (#370) (3f187fd), closes #353

0.26.0 (2025-08-05)

Features

  • validateDescription: add function for validating description (#381) (78e935d), closes #315

0.25.0 (2025-08-01)

Features

  • validateDependencies: add function for validating dependencies (#365) (9654cfd), closes #312 #342

0.24.1 (2025-07-30)

Bug Fixes

0.24.0 (2025-07-30)

Features

  • validateCpu: add function for validating cpu (#361) (81efa06), closes #310

0.23.0 (2025-07-17)

Features

0.22.0 (2025-07-15)

Features

0.21.0 (2025-07-11)

Features

0.20.1 (2025-07-03)

Bug Fixes

0.20.0 (2025-07-03)

Features

  • validateConfig: add function for validating config (#329) (f6dfb10), closes #309

0.19.0 (2025-07-02)

Features

  • deprecate support for legacy commonjs specifications (#313) (5c28281), closes #282

0.18.0 (2025-06-27)

Features

  • validateBundleDependencies: add function for validating bundleDependencies (#308) (94d23a8), closes #232

0.17.0 (2025-06-24)

Features

0.16.1 (2025-06-24)

Bug Fixes

  • remove warning for the contributors field (#290) (e24d98e), closes #60

0.16.0 (2025-06-16)

Features

  • validateType: add function for validating type (#284) (6775b04), closes #68

0.15.0 (2025-06-12)

Features

0.14.0 (2025-06-11)

Features

0.13.3 (2025-06-03)

Bug Fixes

  • deps: update dependency yargs to v18 (#269) (9dddeeb)

0.13.2 (2025-06-01)

Bug Fixes

0.13.1 (2025-05-31)

Bug Fixes

0.13.0 (2025-05-30)

Features

  • validateAuthor: add new validateAuthor function (#253) (0945929), closes #231

0.12.0 (2025-05-30)

Features

  • validate: expand errors to include field name (#242) (ebe4eb1), closes #51

0.11.0 (2025-05-19)

Features

0.10.2 (2025-04-29)

Bug Fixes

  • support jsr package version specifiers (#211) (77e8c7e)

0.10.1 (2025-04-03)

Bug Fixes

  • bump to create-typescript-app@2 with transitions action (#178) (c9a968c), closes #172
  • empty commit to trigger release (ecd3ee5)

0.10.0 (2025-01-30)

Features

0.9.0 (2025-01-28)

Features

0.8.0 (2025-01-15)

Features

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)