De-no (for nå 🦕)

Emil Haukeland (@emilhauk)

Tok Deno for en testspin etter at det tydeligvis nå var mulig å dra inn node-moduler der.

Noen ord om Deno

For de som ikke har hørt om Deno før er det en alternativ js-runtime til Node.js - også bygget over Googles V8 javascript motor. Prosjektet ble startet av Ryan Dahl, samme fyr startet Node.js-prosjektet way back when 🙂

Deno har noen kule ting som node ikke har (i alle fall ikke ennå).

  • Ingen ekstern package manager (les npm). Deno baserer seg på at man importerer modulene man trenger fra url med versjonsnummer.
    • Det er også støtte for import maps, så man kan bruke named imports og få en liste over modulene man er avhengig av.
  • Runtimen har ikke tilgang til noe som standard. Dvs filsystem, miljøvariabler, internett m.fl. er utilgjengelig med mindre man tillater det gjennom flagg under oppstart.
  • Deno lener seg mer mot browser-apier. Det vil si at for eksempel fetch-apiet, worker-apiet m.m. er en integrert del av runtimen, i motsetning til node Node.js
  • Innebygget støtte for TypeScript og (j|t)sx

Listen er ikke komplett, så anbefaler at du leser deg opp litt om du er nysgjerrig.

Blockeren

Tidligere var blockeren at det manglet støtte for å kunne dra inn npm-pakker, dvs man kunne trekke inn pakker om man bygde de utenfor npm, og de ikke har noen avhengigheter mot andre npm-moduler eller interne apier i node. Dette har blitt jobbet en del med i nyere versjoner av Deno.

Blockeren nå endte opp med å være problemer med å importere private npm pakker - i alle fall for oss som bruker access tokens til autentisering og ikke basic auth. Mangel på Rust-kunnskaper satte en stopper for å hjelpe til (+1 på behovet for å lære Rust).

Men hva med Node.js da?

Bare rolig, den har nok mange år igjen. Og det skjer ting der også. v20 slår et slag for sikkerheten og inneholder en eksperimentell tilgangsmodell.

Videre ting å vurdere om interessen er der

En ting som ikke ble testet var å publisere pakkene på Github i tillegg til npmjs.com. Deno støtter tokens, i alle fall mot Github, så det kan være muligheter om interessen er der senere, men undertegnede ble mer interessert i å se på cronjobs i kubernetes 🤷‍♂️