bundle-import
TypeScript icon, indicating that this package has built-in type declarations

0.0.1 • Public • Published

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

Package Sidebar

Install

npm i bundle-import

Weekly Downloads

1,078

Version

0.0.1

License

MIT

Unpacked Size

22.1 kB

Total Files

7

Last publish

Collaborators

  • condorhero