2.0.2 • Published 4 months ago

@eik/esbuild-plugin v2.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

@eik/esbuild-plugin

esbuild plugin for build-time import mapping with Eik.

Installation

npm install --save-dev esbuild @eik/esbuild-plugin

Usage

import * as eik from "@eik/esbuild-plugin";
import esbuild from "esbuild";

const options = /** @type {esbuild.BuildOptions}*/ ({
	entryPoints: ["./src/index.js"],
	outdir: "./public",
	format: "esm",
	platform: "browser",
	target: ["es2017"],
	bundle: true,
	sourcemap: true,
});

const watch = process.argv.includes("--dev");
if (watch) {
	let ctx = await esbuild.context(options);
	await ctx.watch();
	console.log("[esbuild] watching...");
} else {
	// Use the Eik plugin to to import mapping for the production build
	// Load the import maps listed in eik.json from the Eik server
	await eik.load();
	await esbuild.build({
		...options,
		plugins: [eik.plugin()],
	});
}

API

This module has the following API:

.load(options)

Loads an Eik configuration or import maps directly for the plugn to use to apply.

optiondefaulttyperequireddetails
pathcwd/eik.jsonstringfalsePath to eik.json file.
urls[]arrayfalseArray of import map URLs to fetch from.
maps[]arrayfalseArray of import map as objects.

The plugin will attempt to read a eik.json from the current working directory of the Node.js process.

await eik.load();

The path to the location of an eik.json file can be specified with the path option.

await eik.load({
	path: "/path/to/eik.json",
});

The plugin can also load import maps directly from one or multiple URLs using the urls option.

await eik.load({
	urls: ["http://myserver/import-maps/map.json"],
});

Additionally, individual import maps can be specified using the maps option.

await eik.load({
	maps: [
		{
			imports: {
				"lit-element": "https://cdn.eik.dev/lit-element/v2",
			},
		},
	],
});

If several of these options are used, maps takes precedence over urls which takes precedence over values loaded from an eik.json file.

ie. in the following example

await eik.load({
	path: "/path/to/eik.json",
	urls: ["http://myserver/import-maps/map.json"],
	maps: [
		{
			imports: {
				"lit-element": "https://cdn.eik.dev/lit-element/v2",
			},
		},
	],
});

Any import map URLs in eik.json will be loaded first, then merged with (and overridden if necessary by) the result of fetching from http://myserver/import-map before finally being merged with (and overriden if necessary by) specific mappings defined in maps. (In this case lit-element)

.plugin()

Returns the plugin which will apply the loaded import maps during build. The returned plugin should be appended to the esbuild plugin array.

import * as eik from "@eik/esbuild-plugin";
import esbuild from "esbuild";

await eik.load();

esbuild
	.build({
		entryPoints: ["src/main.js"],
		bundle: true,
		format: "esm",
		minify: false,
		sourcemap: false,
		target: ["es2017"],
		plugins: [eik.plugin()],
		outfile: "out.js",
	})
	.catch(() => process.exit(1));

.clear()

Clears the loaded import maps from the plugins internal cache.

2.0.2

4 months ago

2.0.1

5 months ago

2.0.0

5 months ago

1.1.49

9 months ago

1.1.52

7 months ago

1.1.51

7 months ago

1.1.50

7 months ago

1.1.54

5 months ago

1.1.53

6 months ago

1.1.48

1 year ago

1.1.47

2 years ago

1.1.46

2 years ago

1.1.38

2 years ago

1.1.37

2 years ago

1.1.36

2 years ago

1.1.35

2 years ago

1.1.39

2 years ago

1.1.41

2 years ago

1.1.40

2 years ago

1.1.45

2 years ago

1.1.44

2 years ago

1.1.43

2 years ago

1.1.42

2 years ago

1.1.30

3 years ago

1.1.34

2 years ago

1.1.33

2 years ago

1.1.32

3 years ago

1.1.31

3 years ago

1.1.29

3 years ago

1.1.28

3 years ago

1.1.27

3 years ago

1.1.26

3 years ago

1.1.25

3 years ago

1.1.23

3 years ago

1.1.22

3 years ago

1.1.24

3 years ago

2.0.0-next.1

3 years ago

1.1.16

3 years ago

1.1.15

3 years ago

1.1.14

3 years ago

1.1.13

3 years ago

1.1.19

3 years ago

1.1.18

3 years ago

1.1.17

3 years ago

1.1.21

3 years ago

1.1.20

3 years ago

1.1.12

3 years ago

1.1.11

3 years ago

1.1.10

3 years ago

1.1.9

3 years ago

1.1.8

3 years ago

1.1.7

4 years ago

1.1.6

4 years ago

1.1.1

4 years ago

1.1.5

4 years ago

1.1.4

4 years ago

1.1.3

4 years ago

1.1.2

4 years ago

1.1.0

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.2

4 years ago

1.0.3

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago