UNPKG

import-meta-ponyfill

Version:

This library implements some standard interfaces of [import.meta](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta) with the aim of resolving the confusion caused by multiple standards in Node.js. It includes unified

113 lines (105 loc) 3.9 kB
# import.meta ponyfill This library implements some standard interfaces of [import.meta](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta) with the aim of resolving the confusion caused by multiple standards in Node.js. It includes unified support for the following Node.js standards: ## How to use - commonjs ```ts const import_meta_ponyfill = require("import-meta-ponyfill"); const importMeta = import_meta_ponyfill(require, module); importMeta.resolve; // function importMeta.main; // boolean importMeta.url; // string importMeta.filename; // string importMeta.dirname; // string ``` - esmodule ```ts import import_meta_ponyfill from "import-meta-ponyfill"; const importMeta = import_meta_ponyfill(import.meta); ``` - v20.6.0, v18.19.0 > Unflag import.meta.resolve, with parentURL parameter still flagged. - v20.6.0, v18.19.0 > This API no longer throws when targeting file: URLs that do not map to an existing file on the local FS. - v20.0.0, v18.19.0 > This API now returns a string synchronously instead of a Promise. - v16.2.0, v14.18.0 > Add support for WHATWG URL object to parentURL parameter. ## ImportMeta API - `url: string;` > A string representation of the fully qualified module URL. When the > module is loaded locally, the value will be a file URL (e.g. > `file:///path/module.ts`). > > You can also parse the string as a URL to determine more information about > how the current module was loaded. For example to determine if a module was > local or not: > > ```ts > const url = new URL(importMeta.url); > if (url.protocol === "file:") { > console.log("this module was loaded locally"); > } > ``` - `resolve(specifier: string, parent?: string | URL | undefined): string;` > A function that returns the resolved specifier, > see [`import.meta.resolve(specifier)`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/import.meta/resolve), > even attempting to return a result for non-existent paths. > > ```ts > console.log(importMeta.resolve("./foo.js")); > // file:///dev/foo.js > ``` > > @param specifier The module specifier to resolve relative to `parent`. > @param parent The absolute parent module URL to resolve from. > @returns The absolute (`file:`) URL string for the resolved module. - `nodeResolve(specifier: string, parent?: string | URL | undefined): string;` > A function that returns resolved specifier as if it would be imported > using `import.meta.resolve(specifier) or require.resolve(specifier)`. > > ```ts > console.log(import.meta.nodeResolve("./foo.js")); > // file:///dev/foo.js > ``` > > @param specifier The module specifier to resolve relative to `parent`. > @param parent The absolute parent module URL to resolve from. > @returns The absolute (`file:`) URL string for the resolved module. - `main: boolean;` > A flag that indicates if the current module is the main module that was > called when starting the program under Deno. > > ```ts > if (importMeta.main) { > // this was loaded as the main module, maybe do some bootstrapping > } > ``` - `filename: string;` > The absolute path of the current module. > > This property is only provided for local modules (ie. using `file://` URLs). > > Example: > > ```ts > // Unix > console.log(importMeta.filename); // /home/alice/my_module.ts > > // Windows > console.log(importMeta.filename); // C:\alice\my_module.ts > ``` - `dirname: string;` > The absolute path of the directory containing the current module. > > This property is only provided for local modules (ie. using `file://` URLs). > > > Example: > > ```ts > // Unix > console.log(importMeta.dirname); // /home/alice > > // Windows > console.log(importMeta.dirname); // C:\alice > ```