1.0.0 ā€¢ Published 9 months ago

@webfill/import-meta-resolve v1.0.0

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

import.meta.resolve() polyfill

šŸŽÆ Standard synchronous import.meta.resolve() for anywhere \ šŸ’” Inspired by wooorm/import-meta-resolve

npm.io

ā± 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
1.0.0

9 months ago

0.2.0

10 months ago

0.1.2

10 months ago

0.1.1

10 months ago

0.1.0

10 months ago