First time using deno
2023-08-12
For this script I used deno for the first time, and I liked the experience:
1. The permission system
I like the permission system, I can give very exact permissions what to access. I don't have to worry that a dependency might wipe my disk if I only expect it to left-pad a string.
❯ ELM_HOME=$PWD/elm-home deno run --allow-env=ELM_HOME,HOME --allow-read=$PWD --allow-write=$PWD/elm-home --allow-net=github.com,codeload.github.com,api.github.com https://raw.githubusercontent.com/elm-janitor/apply-patches/main/deno/cli.ts --all
This example code can only read and write to the file system where I want it to, access two environment variables, and contact a few domains.
If I don't specify permissions, or github switches the domain to serve code, the runtime asks me. That way a long-running script does not have to start from the very beginning.
┌ ⚠ Deno requests net access to "codeload.github.com".
├ Requested by `fetch()` API.
├ Run again with --allow-net to bypass this prompt.
└ Allow? [y/n/A] (y = yes, allow; n = no, deny; A = allow all net permissions) >
2. No transpiling of TypeScript needed
3. Publishing to npm
It is not hard to publish a tool written in deno to npm thanks to the dnt (Deno to Node transform) package tool.