🎯 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
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";
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
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