Skip to content

Commit

Permalink
docs: document package.json's "exports" field
Browse files Browse the repository at this point in the history
  • Loading branch information
samualtnorman committed Mar 29, 2024
1 parent 9bffa13 commit e17d3c1
Showing 1 changed file with 21 additions and 0 deletions.
21 changes: 21 additions & 0 deletions docs/lib/content/configuring-npm/package-json.md
Original file line number Diff line number Diff line change
Expand Up @@ -339,6 +339,27 @@ not much else.

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.

For example, you could have:

```json
{
"exports": {
".": "./index.js",
"./*": "./*.js",
"./*.js": "./*.js",
"./foo": "./path/to/foo.js"
}
}
```

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>

### browser

If your module is meant to be used client-side the browser field should be
Expand Down

0 comments on commit e17d3c1

Please sign in to comment.