Метаданные модуля
Концепции
- 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
© 2018–2024 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/tutorials/module_metadata