Zap
A wrapper for Deno commands that adds the ability to use configuration files to encapsulate complex options.
Example showing multiple launch configurations (run, install):
deno:
run:
main: sampleApp.ts
dotenv: main.env
security:
allow-env: true
install:
main: sample.ts
security:
allow-env: true
options:
force: true
name: sampleApp
Compatibility
- Deno >1.0.0
- MacOS 10.14.6 Mojave
- Linux (not tested yet)
- Windows (not tested yet, needs path fixing)
Install or Upgrade
$ deno install -Af -n zap https://deno.land/x/deno-nonstd/zap/app.ts
To test it, type:
$ zap
NOTE: If you haven't previously added /.deno/bin to your $PATH variable (MacOS Mojave at least), then you will need to or Deno won't run the utility. It seems to be different for everyone (even on OSX) but this worked for me:
$ echo '/User/<name>/.deno/bin' | sudo tee /etc/paths.d/deno
Then any NEW command window or app started will see the path.
You may have to close any existing terminals or apps that need to use it.
Overview
Zap is an options wrapper for Deno. It allows you to configure complex option profiles in a file and launch Deno without having to type them in agin. You can have as many configuration profiles as you wish.
Do launch a deno script we have to type something like the following:
$ deno run --allow-env --allow-net=google.com,deno.land --allow-read unstable app.ts
But with zap, you can create a file that holds all that info like this:
deno:
run:
main: app.ts
dotenv: main.env
security:
allow-env: true
allow-read: true
allow-net:
- google.com
- deno.land
install:
main: app.ts
security:
allow-env: true
options:
force: true
name: sampleApp
In the above example, to run the script, simply type:
$ zap run
and from the above exmaple, to install the script, type:
$ zap install
Supported features:
Subcommands
All of the deno sub commands are supported.
bundle, cache, completions, doc, eval, fmt, help, info, install, repl, run, test, types, upgrade
And all the options for each is supported.
Environment Variables
Currently environment variables are supported via .env files in the following way:
- Must have a
.env
file present - Reference the file from the
dotenv: <fileName
option in the profile - Pass in the name as a command arg
From the launch file:
deno:
run:
main: app.ts
dotenv: main.env
From the command line:
$ zap run --dotenv=main.env
File Init
You can init a starting launch file like this:
$ zap init launch.yaml
And a starting .env file like this:
$ zap init my.env
It will create based on the file extension. Only .yaml
and .env
are supported currently. More are in the works.
Coming Soon:
- Host Zap into your own app
- Environment varibles in the launch config, rather than only the dotenv file
- Run any command that isn't a Deno comman
- Reference other profiles
- Daisy chain commands
- Extensibility: add your own pre/post processing functions
Contibutions are welcome.
Join me on Discord.