Skip to content

Commit

Permalink
docs: document package.json's "exports" fields' conditional exports
Browse files Browse the repository at this point in the history
  • Loading branch information
samualtnorman committed Mar 30, 2024
1 parent e17d3c1 commit 6a4dd28
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions docs/lib/content/configuring-npm/package-json.md
Original file line number Diff line number Diff line change
Expand Up @@ -341,7 +341,7 @@ If `main` is not set, it defaults to `index.js` in the package's root folder.

### exports

The exports field is an object that maps entry points to modules. It supports wild cards (`*`) and explicit names.
The exports field is an object that maps entry points to modules. This field is supported by Node.js versions including and higher than 12. It acts a more featureful alternative to the `main` field. It supports wild cards (`*`) and explicit names.

For example, you could have:

Expand All @@ -351,14 +351,16 @@ For example, you could have:
".": "./index.js",
"./*": "./*.js",
"./*.js": "./*.js",
"./foo": "./path/to/foo.js"
"./foo": "./path/to/foo.js",
"./package.json": "./package.json",
"./
}
}
```

If someone installed your package with this in your `package.json`, they could `require("my-package")` and it would be mapped to `./node_modules/my-package/index.js` because of `".": "./index.js"`.<br>
If they did `require("my-package/bar")` or `require("my-package/bar.js")`, it would be mapped to `./node_modules/my-package/bar.js` because of the wild cards (`*`).<br>
If they did `require("my-package/foo")` it would be mapped to `./node_modules/my-package/path/to/foo.js` because of the explicit mapping `"./foo": "./path/to/foo.js"`.<br>
If they did `require("my-package/foo")` it would be mapped to `./node_modules/my-package/path/to/foo.js` because of the explicit mapping `"./foo": "./path/to/foo.js"`.

### browser

Expand Down

0 comments on commit 6a4dd28

Please sign in to comment.