@webfill/import-meta-resolve

1.0.0Β β€’Β PublicΒ β€’Β Published

import.meta.resolve() polyfill

🎯 Standard synchronous import.meta.resolve() for anywhere
πŸ’‘ Inspired by wooorm/import-meta-resolve

⏱ Completely synchronous, just like in the browser
πŸ”ƒ Works with --loader stuff too!
🌳 Don't need to --experimental-import-meta-resolve
πŸ¦„ Importable as a ponyfill or polyfill
πŸ§… Works in Node.js, Bun, Deno, and the browser too

Installation

npm Yarn pnpm jsDelivr

You can install this package from npm using npm, Yarn, pnpm, or your other favorite npm package manager. 😎

npm install @webfill/import-meta-resolve

If you're using Deno, you can use the npm: specifier or a Deno-compatible npm CDN like esm.sh

import {} from "npm:@webfill/import-meta-resolve";
import {} from "https://esm.sh/@webfill/import-meta-resolve";

If you want to use this package in the browser (πŸŽ—οΈ import.meta.resolve() is well supported in browsers) you can import it directly from an npm CDN like esm.sh or jsDelivr.

import {} from "https://esm.sh/@webfill/import-meta-resolve";
import {} from "https://esm.run/@webfill/import-meta-resolve";

Usage

Node.js Deno Browser Bun

This package exists primarily to smooth over the different names, signatures, and return values among Bun, Deno, Node.js, and the browser.

import resolve from "@webfill/import-meta-resolve";

console.log(resolve(import.meta, "is-odd"));
//=> file:///awesome-project/node_modules/is-odd/index.js
// OR using import maps in a browser:
//=> https://esm.run/is-odd

console.log(resolve(import.meta, "./lib.js"));
//=> file:///awesome-project/lib.js
// OR when in a browser:
//=> https://localhost:8080/lib.js
import polyfill from "@webfill/import-meta-resolve/polyfill.js";
polyfill(import.meta);

console.log(import.meta.resolve("is-odd"));
//=> file:///awesome-project/node_modules/is-odd/index.js
// OR using import maps in a browser:
//=> https://esm.run/is-odd

console.log(import.meta.resolve("./lib.js"));
//=> file:///awesome-project/lib.js
// OR when in a browser:
//=> https://localhost:8080/lib.js

⚠️ The two-argument import.meta.resolve(specifier, parentURL) is only supported on Node.js and Bun! This behaviour cannot be replicated (easily) elsewhere like in Deno or the browser right now. Check out whatwg/html#8077 if you're interested in the standardization discussion.

import polyfill from "@webfill/import-meta-resolve/polyfill.js";
polyfill(import.meta);

console.log(import.meta.resolve("is-odd"));
//=> file:///awesome-project/node_modules/is-odd/index.js

console.log(import.meta.resolve("is-odd", "file:///different-project/app.js"));
//=> file:///different-project/node_modules/is-odd/index.js

Dependencies (0)

    Dev Dependencies (7)

    Package Sidebar

    Install

    npm i @webfill/import-meta-resolve

    Weekly Downloads

    1

    Version

    1.0.0

    License

    MIT

    Unpacked Size

    11.3 kB

    Total Files

    12

    Last publish

    Collaborators

    • jcbhmr