import.meta
API
Deno 支持 import.meta
API 上的许多属性和方法
import.meta.url
返回当前模块的 URL。
// main.ts
console.log(import.meta.url);
$ deno run main.ts
file:///dev/main.ts
$ deno run https:/example.com/main.ts
https://example.com/main.ts
import.meta.main
返回当前模块是否为程序的入口点。
// main.ts
import "./other.ts";
console.log(`Is ${import.meta.url} the main module?`, import.meta.main);
// other.ts
console.log(`Is ${import.meta.url} the main module?`, import.meta.main);
$ deno run main.ts
Is file:///dev/other.ts the main module? false
Is file:///dev/main.ts the main module? true
import.meta.filename
此属性仅适用于本地模块(具有 file:///...
指定符的模块),对于远程模块返回 undefined
。
返回当前模块的完全解析路径。该值包含特定于操作系统的路径分隔符。
// main.ts
console.log(import.meta.filename);
在 Unix 上
$ deno run main.ts
/dev/main.ts
$ deno run https://example.com/main.ts
undefined
在 Windows 上
$ deno run main.ts
C:\dev\main.ts
$ deno run https://example.com/main.ts
undefined
import.meta.dirname
此属性仅适用于本地模块(具有 file:///...
指定符的模块),对于远程模块返回 undefined
。
返回包含当前模块的目录的完全解析路径。该值包含特定于操作系统的路径分隔符。
// main.ts
console.log(import.meta.dirname);
在 Unix 上
$ deno run main.ts
/dev/
$ deno run https://example.com/main.ts
undefined
在 Windows 上
$ deno run main.ts
C:\dev\
$ deno run https://example.com/main.ts
undefined
import.meta.resolve
相对于当前模块解析指定符。
const worker = new Worker(import.meta.resolve("./worker.ts"));
import.meta.resolve
API 会考虑当前应用的导入映射,这使您能够解析“裸”指定符。
加载了这样的导入映射后...
{
"imports": {
"fresh": "https://deno.land/x/fresh@1.0.1/dev.ts"
}
}
...您现在可以解析
// resolve.js
console.log(import.meta.resolve("fresh"));
$ deno run resolve.js
https://deno.land/x/fresh@1.0.1/dev.ts