Skip to content

Commit

Permalink
doc: edit import.meta.resolve documentation
Browse files Browse the repository at this point in the history
PR-URL: #49247
Refs: #49028
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Reviewed-By: Guy Bedford <guybedford@gmail.com>
  • Loading branch information
aduh95 authored Sep 5, 2023
1 parent 7f001c2 commit e11c7b7
Showing 1 changed file with 16 additions and 14 deletions.
30 changes: 16 additions & 14 deletions doc/api/esm.md
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,9 @@ added:
- v13.9.0
- v12.16.2
changes:
- version: 20.6.0
pr-url: https://github.com/nodejs/node/pull/49028
description: No longer behind the `--experimental-import-meta-resolve` flag.
- version: v20.0.0
pr-url: https://github.com/nodejs/node/pull/44710
description: This API now returns a string synchronously instead of a Promise.
Expand All @@ -348,36 +351,35 @@ changes:
* `specifier` {string} The module specifier to resolve relative to the
current module.
* Returns: {string} The absolute (`file:`) URL string for the resolved module.
* Returns: {string} The absolute URL string that the specifier would resolve to.
[`import.meta.resolve`][] is a module-relative resolution function scoped to
each module, returning the URL string.
```js
const dependencyAsset = import.meta.resolve('component-lib/asset.css');
// file:///app/node_modules/component-lib/asset.css
import.meta.resolve('./dep.js');
// file:///app/dep.js
```
All features of the Node.js module resolution are supported. Dependency
resolutions are subject to the permitted exports resolutions within the package.
```js
import.meta.resolve('./dep', import.meta.url);
// file:///app/dep
```
**Caveats**:
> **Caveat** This can result in synchronous file-system operations, which
> can impact performance similarly to `require.resolve`.
* This can result in synchronous file-system operations, which
can impact performance similarly to `require.resolve`.
* This feature is not available within custom loaders (it would
create a deadlock).
Previously, Node.js implemented an asynchronous resolver which also permitted
a second contextual argument. The implementation has since been updated to be
synchronous, with the second contextual `parent` argument still accessible
behind the `--experimental-import-meta-resolve` flag:
**Non-standard API**:
* `parent` {string|URL} An optional absolute parent module URL to resolve from.
When using the `--experimental-import-meta-resolve` flag, that function accepts
a second argument:
> **Caveat** This feature is not available within module customization hooks (it
> would create a deadlock).
* `parent` {string|URL} An optional absolute parent module URL to resolve from.
**Default:** `import.meta.url`
## Interoperability with CommonJS
Expand Down

0 comments on commit e11c7b7

Please sign in to comment.