summaryrefslogtreecommitdiff
path: root/node_modules/esm-import-transformer/README.md
blob: 3b9a8bb5fd98a4921a3b3ac8e3de0a08177c5ad1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# 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 remember that _running_ the resulting code will fail if you try to `require` an ESM package (in some JavaScript environments, e.g. Node < 20).

```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
```