Node vs Deno

Quelques notes sur la prise en main de Deno, nouveau runtime javascript créé par le gars qui a fait Node et l'adaptation d'applications à son usage.

Installation

L'installation de Deno est extrêmement simple :

Comparaisons

Pas de Deno sur Raspi

Deno Ne tourne pas sur raspberry Pi, contrairement à Node. C'est bien dommage

Module chargé en ligne de commande ou par import

Sous Node, on peut savoir si un module est chargé en ligne de commande ou par un import :

const argv = (await import('node:process')).argv;
const [, executed] = argv;
const url = new globalThis.URL(import.meta.url);
console.log(`executed: ${executed}`);
console.log(`current : ${url.pathname}`);
if (executed === url.pathname) {
    console.log('Loaded from cli');
} else {
    console.log('Loaded from import');
}

L'équivalent Deno de argv, Deno.args, ne contient pas les 2 premières entrées fournies par Node, à savoir le chemin de l'exécutable et celui du script exécuté.

Mais Deno offre la variable mainModule qui est le chemin du module entrée en ligne de commande. Le test pourrait donc ressembler à ceci :

let executed;
if (typeof Deno === 'object') {
    executed = new globalThis.URL(Deno.mainModule).pathname;
} else {
    [, executed] = (await import('node:process')).argv;
}
const url = new globalThis.URL(import.meta.url);
console.log(`executed: ${executed}`);
console.log(`current : ${url.pathname}`);
if (executed === url.pathname) {
    console.log('Loaded from cli');
} else {
    console.log('Loaded from import');
}