Skip to main content
Version: 4.x

package.json

The manifest file of a package.

Fields#

engines#

You can specify the version of Node and pnpm that your stuff works on:

{    "engines": {        "node": ">=10",        "pnpm": ">=3"    }}

During local development, pnpm will always fail with an error message when its version will not match the one in engines.pnpm.

Unless the user has set the engine-strict config flag, this field is advisory only and will only produce warnings when your package is installed as a dependency.

peerDependenciesMeta#

This field lists some extra information related to the dependencies listed in the peerDependencies field.

peerDependenciesMeta[pkg].optional#

If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error.

{    "peerDependencies": {        "react-dom": "1"    },    "peerDependenciesMeta": {        "react-dom": {            "optional": true        },        // express is not specified in the peerDependencies field,        // so pnpm will assume that any version of express is fine        "express": {            "optional": true        }    }}

publishConfig#

Added in: v3.4.0

It is possible to override some fields in the manifest, before the package is packed. The following fields may be overridden: bin, main, exports, types or typings, module, browser, esnext, es2015, unpkg and umd:main.

To override a field, add the publish version of the field to publishConfig.

For instance, the following package.json:

{    "name": "foo",    "version": "1.0.0",    "main": "src/index.ts",    "publishConfig": {        "main": "lib/index.js",        "typings": "lib/index.d.ts"    }}

Will be published as:

{    "name": "foo",    "version": "1.0.0",    "main": "lib/index.js",    "typings": "lib/index.d.ts"}