Deno wrapper
🦕 Like ./gradlew
, but for Deno
./denow --help
./denow eval 'console.log(42)'
./denow fmt
./denow task mytask
./denow compile --allow-read --allow-net app.ts
./denow run -A https://examples.deno.land/http-server.ts |
🦕 Downloads a pinned version of Deno
📂 Caches Deno installation in the .deno
folder
🌟 Creates a ./denow
wrapper script that auto-downloads Deno
👤 Users don’t need to install deno
globally
Installation
curl -fsSL https://deno.land/x/denow/install.sh | sh
irm https://deno.land/x/denow/install.ps1 | iex
If you want to install a specific version of Deno instead of the latest
version you can use an extra argument to choose a specific version. This is the
version (1.38.0
), not the tag name (v1.38.0
).
curl -fsSL https://deno.land/x/denow/install.sh | sh -s 1.38.0
v="1.38.0"; irm https://deno.land/x/denow/install.ps1 | iex
🛑 If you’re looking to install Deno globally check out the Deno website for an installation guide.
Usage
Just use ./denow
as though it were the true deno
binary! Anyone who clones
your repo won’t need to install deno themselves; the ./denow
will auto-install
a local copy into the .deno
folder.
⚠️ Make sure you add .deno
to your .gitignore
! That’s where deno
will be
installed to by the wrapper.
./denow --help
./denow eval 'console.log(42)'
./denow fmt
./denow task mytask
./denow compile --allow-read --allow-net https://deno.land/std/http/file_server.ts
./denow run --allow-net https://examples.deno.land/http-server.ts
./denow run -A src/index.ts
If you want to update the version of Deno that ./denow
downloads and invokes,
you can go through the install steps (above) again to pin to a different
version. Be aware that this will overwrite the ./denow
file. You can also
inspect the generated ./denow
file to see what version of Deno they are
invoking and change it manually.
Why?
💡 Inspired by The Gradle Wrapper
Sometimes (not often, but sometimes), you want to have an auto-install wrapper around a project-critical binary. In a nutshell you gain the following benefits:
Standardizes a project on a given Deno version, leading to more reliable and robust builds.
Provisioning a new Deno version to different users and execution environment (e.g. IDEs or Continuous Integration servers) is as simple as changing the Wrapper definition.
For instance, GitHub Actions can be written using Deno, but how do you make sure
deno
is available on the GitHub Action runner? You can use ./denow
as a
proxy!
deno
binary as ./deno
?
Why not just download the Because the Deno binary is >100MB, which is more than most version control systems want to deal with. GitHub will even block files larger than 100MB!
Development
Make sure that any changes are roughly the same in the ./denow.bat
and
./deno
wrappers as well as the install.ps1
and install.sh
installers.