模組元資料
概念
- import.meta 可提供模組內容的資訊。
- 布林值 import.meta.main 會讓您知道目前的模組是否是程式進入點。
- 字串 import.meta.url 會提供您目前的模組 URL。
- 字串 import.meta.filename 會提供您目前模組的完整解析路徑。僅適用於本機模組。
- 字串 import.meta.dirname 會提供您目前模組所在目錄的完整解析路徑。僅適用於本機模組。
- import.meta.resolve 讓您能解析相對於目前模組的規格識別碼。此函式會考慮匯入地圖(如果在啟動時提供)。
- 字串 Deno.mainModule 會提供您主模組進入點的 URL,也就是 deno 執行時期呼叫的模組。
範例
以下範例使用兩個模組來顯示 import.meta.url
、import.meta.main
和 Deno.mainModule
之間的差異。在此範例中,module_a.ts
是主模組進入點
module_b.ts
export function outputB() {
console.log("Module B's import.meta.url", import.meta.url);
console.log("Module B's mainModule url", Deno.mainModule);
console.log(
"Is module B the main module via import.meta.main?",
import.meta.main,
);
}
module_a.ts
import { outputB } from "./module_b.ts";
function outputA() {
console.log("Module A's import.meta.url", import.meta.url);
console.log("Module A's mainModule url", Deno.mainModule);
console.log(
"Is module A the main module via import.meta.main?",
import.meta.main,
);
console.log(
"Resolved specifier for ./module_b.ts",
import.meta.resolve("./module_b.ts"),
);
}
outputA();
console.log("");
outputB();
如果 module_a.ts
位於 /home/alice/deno
,則 deno run --allow-read module_a.ts
的輸出為
Module A's import.meta.url file:///home/alice/deno/module_a.ts
Module A's mainModule url file:///home/alice/deno/module_a.ts
Is module A the main module via import.meta.main? true
Resolved specifier for ./module_b.ts file:///home/alice/deno/module_b.ts
Module B's import.meta.url file:///home/alice/deno/module_b.ts
Module B's mainModule url file:///home/alice/deno/module_a.ts
Is module B the main module via import.meta.main? false