NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #1193 most downloaded on npm
A tiny (952b), correct, general-purpose, and configurable "exports" and "imports" resolver without file-system reliance
Last release 2 years ago
no release in 18 months
Release timing varies
gaps range from 2 weeks to 1.7 years
Most releases are documented
notes for 8 of 11 stable releases
Nothing withdrawn
no release was ever pulled
6 years old
12 releases · first in 2021
One column per quarter.
Match full subpath pattern ( #34 , #37 ): c9b413e Thank you @sosoba
Full Changelog: v2.0.2...v2.0.3
Support "#*" import key pattern ( #27 , #28 ): ed6da9b
Correctly handle subpath patterns where entries did not contain "*" for value injection ( #26 ): 1a0164d , 5d9601d Thank you @bnussman for the test &
"*" for value injection (#26): 1a0164d, 5d9601dFull Changelog: v2.0.0...v2.0.1
Changed the resolve return signature from string | undefined to string[] | undefined : Previously resolve.exports could only return 1 string output. T
resolve return signature from string | undefined to string[] | undefined: resolve.exports could only return 1 string output. This ignored "imports" and "exports" entries that could return multiple resolved locations (aka "alternatives").resolve.exports supports arrayable entries and normalizes all outputs into arrays. This makes it easier for consumers to uniformly traverse the output (or simply take the first item).NEW Add imports function to resolve "imports" identifiers: #14
NEW Add exports function to resolve "exports" maps exclusively
Note: This is identical to the resolve function from resolve.exports@1.x release.
Converted the resolve function to be a convenience helper.
Note: Its API signature is unchanged. However, it also now accepts import specifiers. If an import identifier (eg, #foo or <package>/#foo) is received, then the imports() function is invoked. Otherwise the exports() function is called.
Support array values (#17)
Full Changelog: v1.1.1...v2.0.0
Nothing published for this version
Handle subpath entry names that start with a dot ( #20 ): Thank you @ErikMikkelson
"*" anywhere (#16, #22): 7e41d63null resolved values: (#16): d3bda82"*" within the resolved value (#9):All these fixes allow the following package.json example to be resolved correctly (according to the latest "exports" resolution specification):
{
"name": "foobar",
"exports": {
// subpath w/ leading "."
"./.ini": "./.ini",
// nullable (private) values
"./features/internal/*": null,
"./features/*": "./src/features/*.js",
"./features/private/*": null,
// allow "*" anywhere in pattern
"./views/*": "./src/views/*.js",
"./views/*.jsx": "./src/views/*.jsx",
"./views/*/template": "./src/views/*.html",
// multiple wildcards in value
"./es*": "./esm/*/GAP/*.js"
// "foobar/es2015" => "./esm/2015/GAP/2015.js"
// "foobar/es2015/a/b" => "./esm/2015/a/b/GAP/2015/a/b.js"
}
}readonly and const arrays in options (#15): 587b0batypes condition to exports field (#18): dc7bae316.x and 18x to CI testing matrix: 4908584Full Changelog: v1.1.0...v1.1.1
Add unsafe option ( #12 , #13 ): 0b69d12 Note: This option should not be used by most consumers, but is made available for edge cases. As the name sug
unsafe option (#12, #13): 0b69d12Full Changelog: v1.0.2...v1.1.0
Ensure subpath pattern entries are matched correctly ( #4 ): 81ae07a Introduced faulty logic in #2 which made it such that any "match" that was 2 char
Add support for conditionals within directory mappings – both subpath and subpattern variants ( #1 , #2 ): a881ef8 The following examples are now supp
Add support for conditionals within directory mappings – both subpath and subpattern variants (#1, #2): a881ef8
The following examples are now supported, in congruence with the Node.js algorithm (v12.20+):
{
"name": "foobar",
"exports": {
// subpath folder mapping
"./features/": {
"browser": {
"import": "./browser.import/",
"require": "./browser.require/"
},
"import": "./import/",
"require": "./require/"
},
// subpath pattern mapping
"./features/*": {
"browser": {
"import": "./browser.import/*.mjs",
"require": "./browser.require/*.js"
},
"import": "./import/*.mjs",
"require": "./require/*.js"
}
}
}Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →