Git Product home page Git Product logo

denox's Introduction

GitHub Workflow Status latest SemVer Contribution welcome Commitizen friendly Semantic release MIT License

Install/UpgradeOverviewUsageGetting startedContributing

DenoX screenshot example

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
  init                    Initialize a denox workspace

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.

DenoX configuration files can be created automatically using the denox init command.

You can select the configuration language using the --yaml, --json, and --typescript commands. YAML is selected by default.

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!

denox's People

Contributors

bentoumitech avatar bluebinary avatar rivy avatar tkdkid1000 avatar yihua1218 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.