92 lines
2.4 KiB
Markdown
92 lines
2.4 KiB
Markdown
# esm-import-transformer
|
|
|
|
Can 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");
|
|
```
|
|
|
|
## Usage
|
|
|
|
```js
|
|
// ESM
|
|
import { ImportTransformer } from "esm-import-transformer";
|
|
|
|
// or CJS
|
|
const { ImportTransformer } = await import("esm-import-transformer");
|
|
```
|
|
|
|
### Transform with an import map
|
|
|
|
Pass in a source code string and an [import maps](https://github.com/WICG/import-maps) object.
|
|
|
|
```js
|
|
let sourceCode = `import {html, css, LitElement} from "lit";`;
|
|
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";`
|
|
```
|
|
|
|
### Transform to dynamic `import()`
|
|
|
|
```js
|
|
let sourceCode = `import {html, css, LitElement} from "lit";`;
|
|
let it = new ImportTransformer(sourceCode);
|
|
|
|
let outputCode = it.transformToDynamicImport();
|
|
// returns: `const {html, css, LitElement} = await import("lit");`
|
|
```
|
|
|
|
### Transform to `require()`
|
|
|
|
_Added in v3.0.1_: This method does not require that the downstream package is CommonJS, but just know that code will fail if you try to run it on a package that is not CommonJS.
|
|
|
|
```js
|
|
let sourceCode = `import {html, css, LitElement} from "lit";`;
|
|
let it = new ImportTransformer(sourceCode);
|
|
|
|
let outputCode = it.transformToRequire();
|
|
// returns: `const {html, css, LitElement} = require("lit");`
|
|
```
|
|
|
|
### Has imports?
|
|
|
|
_Added in v3.0.2_ Returns true if the code has any top level `import`.
|
|
|
|
```js
|
|
let sourceCode = `import {html, css, LitElement} from "lit";`;
|
|
let it = new ImportTransformer(sourceCode);
|
|
it.hasImports(); // true
|
|
```
|
|
|
|
```js
|
|
let sourceCode = `const {html, css, LitElement} = require("lit");`;
|
|
let it = new ImportTransformer(sourceCode);
|
|
it.hasImports(); // false
|
|
```
|
|
|
|
|
|
## Installation
|
|
|
|
Available on [npm](https://www.npmjs.com/package/esm-import-transformer)
|
|
|
|
```
|
|
npm install esm-import-transformer
|
|
```
|