Entendiendo import.meta.main en Deno
-
Oliver Servín
#¿Qué es import.meta
?
import.meta.main
es un fragmento de código que aparece en nuestro archivo main.js
en cualquier proyecto nuevo de Deno.
import.meta
no es una función exclusiva de Deno, sino que proviene de la plataforma web. En la documentación de MDN de Mozilla podemos encontrar información detallada. import.meta
es una sintaxis especial que nos permite obtener información sobre el módulo o archivo actual que contiene nuestro código JavaScript. Un módulo es simplemente un archivo que contiene JavaScript.
En el IDE, al escribir import.meta
seguido de un punto, podemos ver las propiedades y métodos disponibles. Por ejemplo, dirname
proporciona el directorio del archivo actual, y filename
muestra el nombre del archivo.
#Utilización de la propiedad main
Esta información, aunque sencilla, puede ser útil. La propiedad main
es un valor booleano que indica si el archivo actual es el módulo principal en Deno.
Para entenderlo mejor, agreguemos un console.log
dentro de una función helloWorld
que muestre el valor de import.meta.main
:
function helloWorld() { console.log("Main?", import.meta.main); return "Hey World!";} if (import.meta.main) { console.log(helloWorld());}
Al ejecutar el archivo con deno run
en la terminal, veremos que el valor de main
es true
, ya que estamos ejecutando directamente este archivo.
deno run main.ts
Para usar la función helloWorld
en otro archivo, podemos agregar export
delante de la función:
-function helloWorld() {+export function helloWorld() { console.log("Main?", import.meta.main); return "Hey World!"; } if (import.meta.main) { console.log(helloWorld()); }
Para evitar que el código adicional se ejecute al importarlo, creemos un archivo other.ts
e importemos la función HelloWorld
:
import { helloWorld } from "./main.ts"helloWorld()
Al ejecutar other.ts
con Deno, el valor de import.meta.main
será false
.
El código en main.ts
como console.log(helloWorld())
no se ejecutará al ejecutar explícitamente un archivo diferente.
#Conclusión
Este patrón nos permite ejecutar código en un archivo mientras exportamos funcionalidades para otros módulos, mejorando la organización y estructura del código.
Si has trabajado con Node.js, notarás que import.meta
sustituye funciones globales como __dirname
, ofreciendo una API más limpia y alineada con los estándares web.