0.0.1 • Published 6 months ago

bundle-import v0.0.1

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

Bundle-import

NPM version Downloads License GitHub stars

Bundle and load a file using the import-from-string.

Difference from bundle-require

Most of the code of Bundle-import comes from bundle-require. There is no objection to this, but Bundle-import does not generate temporary files when reading module contents, which can avoid conflicts with other tools. For example, the following two issues:

  1. Tmp .mjs file in the current directory breaks other tools
  2. vite 运行时,修改mock文件会生成很多个xxx.mjs文件

Features

  • Support ESM and CJS environments
  • Support dynamic import
  • Support import.meta.url
  • Support access to global variables
  • No asynchronous IO operations
  • No module cache

Install

npm install bundle-import

Usage

ESM

import { bundleImport } from "bundle-import";

const { mod: mod1 } = await bundleImport({ filepath: "./fixtures/index.cjs", cwd: process.cwd() + "/playground" });
console.log(mod1);

const { mod: mod2 } = await bundleImport({ filepath: "./playground/fixtures/index.mjs" });
console.log(mod2.default, mod2);

CJS

const { bundleImport } = require("bundle-import");

async function main() {
	const { mod: mod1 } = await bundleImport({ filepath: "./fixtures/index.cjs", cwd: process.cwd() + "/playground" });
	console.log(mod1);

	const { mod: mod2 } = await bundleImport({ filepath: "./playground/fixtures/index.mjs" });
	console.log(mod2.default, mod2);
}

main();

API

bundleImport(options)

options

cwd

Type: string\ Default: process.cwd()

Project root directory.

filename

Type: string\ Required: true

The filepath to bundle and require.

external

Type: (string | RegExp)[]\ Required: []

External packages.

tsconfig

Type: string\ Required: tsconfig.json

A custom tsconfig path to read paths option.

format

Type: "cjs" | "esm"\

Provide bundle format explicitly to skip the default format inference.

esbuildOptions

Type: BuildOptions\ Required: false

esbuild options.

Appreciation

License

MIT License © 2023-Present Condor Hero