Install/Upgrade •
Overview •
Usage •
Getting started •
Contributing
Install/Upgrade
Prerequisites: Deno (>=1.0.0)
$ deno install -Af -n denox https://denopkg.com/BentoumiTech/denox/denox.ts
Overview
DenoX is a cross platform script runner and workspace wrapper for Deno
Using DenoX, you can set up your workspace scripts permissions and options in declarative code.
In short, it allows you to to replace this:
$ deno run --allow-read --allow-write --allow-net main.ts
with this:
$ denox run start
- DRY Only write your permissions and options once.
- Packaged Your code can run on a different machine with a short single command
denox run start
- Cross Platform DenoX support and is tested on Linux, Mac OS and Windows.
- Extensible 🔜
Usage
$ denox --help
denox v0.4.0
Usage:
$ denox <command> [options]
Commands:
run <script> [...args] Run a script
For more info, run any command with the `--help` flag:
$ denox run --help
Options:
-h, --help Display this message
-v, --version Display version number
Examples:
denox run start
Getting Started
deno-workspace
file
Scripts and options need to be defined in a deno-workspace
file at the root of your project.
DenoX supports YAML, JSON and typescript as format for deno-workspace
.
In the following examples running $ denox run start
will execute main.ts file with example.com
networking permissions
YAML
deno-workspace.yml
scripts:
start:
file: main.ts
deno_options:
allow-net: example.com
JSON
deno-workspace.json
{
"scripts": {
"start": {
"file": "main.ts",
"deno_options": {
"allow-net": "example.com"
}
}
}
}
Typescript
deno-workspace.ts
import { DenoWorkspace } from "https://denopkg.com/BentoumiTech/denox/src/interfaces.ts";
const workspace: DenoWorkspace = {
"scripts": {
"start": {
"file": "main.ts",
"deno_options": {
"allow-net": "example.com"
}
},
},
};
export { workspace };
Scripts
You can easily run scripts using denox by adding them to the “scripts” field in deno-workspace
and run them with denox run <script-name>
.
Example:
scripts:
# "denox run start" will execute main.ts with example.com networking permissions
start:
file: main.ts
deno_options:
allow-net: example.com
# "denox run develop" will execute main.ts with localhost networking permissions and source code cache reloaded
develop:
file: main.ts
deno_options:
allow-net: localhost
reload: true
v8-flags:
- --regexp-tier-up
- --adjust-os-scheduling-parameters true
Options
Scripts can be extended with options.
deno_options:
Deno options will add the corresponding deno argument with it’s value to the deno command.
It supports string, array of strings and boolean.
Example:
scripts:
# "denox run start" will execute "deno run --allow-net=example.com github.com --reload --allow-read=./files main.ts"
start:
file: main.ts
deno_options:
reload: true
allow-net:
- example.com
- github.com
allow-read: ./files
allow-write: false
Compatibility
It currently support all the options that are accepted by the deno run
command. For more informations refer to deno run --help
.
allow-all, allow-env, allow-hrtime, allow-net, allow-plugin, allow-read, allow-run,
allow-write, cached-only, cert, config, importmap, inspect, inspect-brk, lock, lock-write,
log-level, no-remote, quiet, reload, seed, unstable, v8-flags
Globals
Options added in “globals” field gets added to all scripts.
Note: If a same option is set in a script and also set globally the script scoped value overwrite the global one
Example:
scripts:
# "denox run develop" inherit the --allow-read permission from the globals deno_options
# "deno run --all-read main.ts"
develop:
file: main.ts
globals:
deno_options:
allow-read: true
Contributing
Please take a look at our contributing guidelines if you’re interested in helping!