jsenv-import-map
Helpers to implement importMap
Table of contents
Presentation
@jsenv/import-map
can be used to implement the behaviour of importMap as described in the specification. It is written using es modules and is compatible with Node.js.
— see importMap spec
Usage
@jsenv/import-map
exports are documented in this section.
composeTwoImportMaps
composeTwoImportMaps
takes two importMap
and return a single importMap
being the composition of the two.
Implemented by src/composeTwoImportMaps/composeTwoImportMaps.js
import { composeTwoImportMaps } from "@jsenv/import-map"
const importMap = composeTwoImportMaps(
{
imports: {
foo: "bar",
},
},
{
imports: {
foo: "whatever",
},
},
)
console.log(JSON.stringify(importMap, null, " "))
{
"imports": {
"foo": "whatever"
}
}
normalizeImportMap
normalizeImportMap
returns an importMap
resolved against an url
and sorted.
Implemented by src/normalizeImportMap/normalizeImportMap.js
import { normalizeImportMap } from "@jsenv/import-map"
const importMap = normalizeImportMap(
{
imports: {
foo: "./bar",
"./ding.js": "./dong.js"
},
},
"http://your-domain.com",
)
console.log(JSON.stringify(importMap, null, ' ')
{
"imports": {
"foo": "http://your-domain.com/bar",
"http://your-domain.com/ding.js": "http://your-domain.com/dong.js"
}
}
resolveImport
resolveImport
returns an import url
applying an importMap
to specifier
and importer
.
Implemented by src/resolveImport/resolveImport.js
import { resolveImport } from "@jsenv/import-map"
const importUrl = resolveImport({
specifier: "../index.js",
importer: "http://domain.com/folder/file.js",
importMap: {
imports: {
"http://domain.com/index.js": "http://domain.com/main.js",
},
},
})
console.log(importUrl)
http://domain.com/main.js
The provided importMap
must be resolved and sorted to work as expected. You can use normalizeImportMap to do that.
Installation
If you never installed a jsenv package, read Installing a jsenv package before going further.
This documentation is up-to-date with a specific version so prefer any of the following commands
npm install --save-dev @jsenv/import-map@6.2.0
yarn add --dev @jsenv/import-map@6.2.0