๐ฏ 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