Perform transformations on ESM import syntax (using import maps or to a dynamic import).
npm install esm-import-transformerCan transform any ESM source code import URLs using an import maps object. This package works in ESM or CJS.
``js
// Input source code:
import {html, css, LitElement} from "lit";
// Transform with an import map:
import {html, css, LitElement} from "https://cdn.jsdelivr.net/gh/lit/dist@2/core/lit-core.min.js";
// Or transform to a dynamic import:
const {html, css, LitElement} = await import("lit");
// Or transform to CommonJS require:
const {html, css, LitElement} = require("lit");
`
`js
// ESM
import { ImportTransformer } from "esm-import-transformer";
// or CJS
const { ImportTransformer } = await import("esm-import-transformer");
`
Pass in a source code string and an import maps object.
`jsimport {html, css, LitElement} from "lit";
let sourceCode = ;
let it = new ImportTransformer(sourceCode);
let importMap = {
imports: {
lit: "https://cdn.jsdelivr.net/gh/lit/dist@2/core/lit-core.min.js"
}
};
let outputCode = it.transformWithImportMap(importMap);
// returns: import {html, css, LitElement} from "https://cdn.jsdelivr.net/gh/lit/dist@2/core/lit-core.min.js";`
`jsimport {html, css, LitElement} from "lit";
let sourceCode = ;
let it = new ImportTransformer(sourceCode);
let outputCode = it.transformToDynamicImport();
// returns: const {html, css, LitElement} = await import("lit");`
_Added in v3.0.1_: This method does _not_ require that the downstream package is CommonJS, but remember that _running_ the resulting code will fail if you try to require an ESM package (in some JavaScript environments, e.g. Node < 20).
`jsimport {html, css, LitElement} from "lit";
let sourceCode = ;
let it = new ImportTransformer(sourceCode);
let outputCode = it.transformToRequire();
// returns: const {html, css, LitElement} = require("lit");`
_Added in v3.0.2_ Returns true if the code has any top level import.
`jsimport {html, css, LitElement} from "lit";
let sourceCode = ;`
let it = new ImportTransformer(sourceCode);
it.hasImports(); // true
`jsconst {html, css, LitElement} = require("lit");
let sourceCode = ;`
let it = new ImportTransformer(sourceCode);
it.hasImports(); // false
Available on npm
```
npm install esm-import-transformer