Skip to main content
Deno 2 is finally here πŸŽ‰οΈ
Learn more

Welcome to Trex πŸ±β€πŸ‰

Package management for deno

GitHub issues GitHub forks GitHub stars GitHub license

What is Trex?

is a β€œPackage management” for deno to implement an import_map.json for your imports is an easiest way to make imports in deno.

// import_map.json

{
    "imports":  {
    "http/":  "https://deno.land/std/http/"
    }
}

For more information about the import maps in deno import maps

Setup visual studio code

install the deno extension first, then add in settings.json the following configuration.

settings.json

activate the enable option Deno unstable features in settings >> extensions >> Deno

unstable

if you get this error after installing a module.

error

run your project to cache all dependencies.

note: We are working so that when a module is installed in import_map.json it will be cached to avoid this error when calling the module. it is currently being tested on windows and linux but it is an instable feature at the moment

Guide:

installation:

Download the repository and open the terminal in the folder of the repository and write:

$  deno install --allow-read --allow-write --allow-net --allow-run --unstable Trex.ts

note: You should have the last version 1.0.0 >= of deno for no errors.

or in your terminal you can write

$  deno install --allow-read --allow-write --allow-net --allow-run --unstable https://deno.land/x/trex/Trex.ts

update Trex using

$  deno install -f --allow-read --allow-write --allow-net --allow-run --unstable https://deno.land/x/trex/Trex.ts

or use:

$ Trex update

for versions 0.2.0 or higher.

check for the installation of the Trex tool writing in the terminal:

$  Trex --version

and the console should presente the Trex version.

for any help of the commands of Trex write:

$  Trex --help

and the console should present:

advance package management for deno to implement an import_map.

USAGE:
   Trex [OPTIONS] [SUBCOMMAND]

OPTIONS:
   --help
           Prints help information.
   --custom
           install custom module.
   --version
           Prints version information.
   --deps
           show dependencies versions.
   --map
           add module to import_mao.json.

SUBCOMMANDS:
   [install or i] install some module.
   delete     delete a module from import_map.json.

   getTool    install some tool.

   update     update Trex.

   treeDeps   view dependencie tree.

for a better implementation of this tool you can use the tool Commands of deno Commands

How to use

in your command line write:

$ Trex install --map fs http fmt

note: you can use Trex i –map fs http fmt

an import_map.json file will be created with the following.

{
  "imports": {
    "fs/": "https://deno.land/std/fs/",
    "http/": "https://deno.land/std/http/",
    "fmt/": "https://deno.land/std/fmt/"
  }
}

Usage example.

create a test file

// server.ts
import { serve } from "http/server.ts";
import { green } from "fmt/colors.ts";

const server = serve({ port: 8000 });
console.log(green("http://localhost:8000/"));

for await (const req of server) {
  req.respond({ body: "Hello World\n" });
}

run in terminal

$ deno run --allow-net --importmap=import_map.json --unstable server.ts

note: it is important to use –importmap=import_map.json –unstable

using third party modules

example using oak

$ Trex i --map oak

in import_map.json

{
  "imports": {
    "fs/": "https://deno.land/std/fs/",
    "http/": "https://deno.land/std/http/",
    "fmt/": "https://deno.land/std/fmt/",
    "oak": "https://deno.land/x/oak/mod.ts"
  }
}

note: third party modules are added using mod.ts

in server.ts

// server.ts
import { Application } from "oak";

const app = new Application();

app.use((ctx) => {
  ctx.response.body = "Hello World!";
});

await app.listen({ port: 8000 });

run in terminal

$ deno run --allow-net --importmap=import_map.json --unstable server.ts

add custom module

in your command line write:

$ Trex --custom React=https://dev.jspm.io/react/index.js

in import_map.json

{
  "imports": {
    "fs/": "https://deno.land/std/fs/",
    "http/": "https://deno.land/std/http/",
    "fmt/": "https://deno.land/std/fmt/",
    "oak": "https://deno.land/x/oak/mod.ts",
    "React": "https://dev.jspm.io/react/index.js"
  }
}

install tools like velociraptor or Commands

list of tools you can install

in your command line write:

$ Trex getTool Commands

this will install the tool

note: If you are a linux/MacOs user you’ll have to specificate the PATH manually when the tool gets installed the will appear in your terminal export PATH=”/home/username/.deno/bin:$PATH”

delete module

in your command line write:

$ Trex delete React

in import_map.json

{
  "imports": {
    "fs/": "https://deno.land/std/fs/",
    "http/": "https://deno.land/std/http/",
    "fmt/": "https://deno.land/std/fmt/",
    "oak": "https://deno.land/x/oak/mod.ts"
  }
}

install another version of a module

write the name of the module more @<Version>

example:

$ Trex install --map fs@0.`5`4.0

in import_map.json

{
  "imports": {
    "fs/": "https://deno.land/std@0.54.0/fs/"
  }
}

note: can be used with third party modules.

check the versions of dependencies using

$ Trex --deps

you should see something like that on the console.

// in import_map.json
{
  "imports": {
    "oak": "https://deno.land/x/oak@v4.0.0/mod.ts",
    "http/": "https://deno.land/std@0.51.0/http/"
  }
}
name module url version latest upToDate
oak oak β€œhttps://deno.land/x/oak@v4.0.0/mod.ts” β€œv4.0.0” β€œv5.0.0” false
http/ std β€œhttps://deno.land/std@0.54.0/http/” β€œ0.54.0” β€œ0.54.0” true

thanks to Fzwael this functionality is based on your tool deno-check-updates

see module dependency tree.

$ trex treeDeps fs

you should see this in the terminal

local: C:\Users\trex\AppData\Local\deno\deps\https\deno.land\434fe4a7be02d187573484b382f4c1fec5b023d27d1dcf4f768f300799a073e0
type: TypeScript
compiled: C:\Users\trex\AppData\Local\deno\gen\https\deno.land\std\fs\mod.ts.js
map: C:\Users\trex\AppData\Local\deno\gen\https\deno.land\std\fs\mod.ts.js.map
deps:
https://deno.land/std/fs/mod.ts
  β”œβ”€β”¬ https://deno.land/std/fs/empty_dir.ts
  β”‚ └─┬ https://deno.land/std/path/mod.ts
  β”‚   β”œβ”€β”€ https://deno.land/std/path/_constants.ts
  β”‚   β”œβ”€β”¬ https://deno.land/std/path/win32.ts
  β”‚   β”‚ β”œβ”€β”€ https://deno.land/std/path/_constants.ts
  β”‚   β”‚ β”œβ”€β”¬ https://deno.land/std/path/_util.ts
  β”‚   β”‚ β”‚ └── https://deno.land/std/path/_constants.ts
  β”‚   β”‚ └── https://deno.land/std/_util/assert.ts
  β”‚   β”œβ”€β”¬ https://deno.land/std/path/posix.ts
  β”‚   β”‚ β”œβ”€β”€ https://deno.land/std/path/_constants.ts
  β”‚   β”‚ └── https://deno.land/std/path/_util.ts
  β”‚   β”œβ”€β”¬ https://deno.land/std/path/common.ts
  β”‚   β”‚ └─┬ https://deno.land/std/path/separator.ts
  β”‚   β”‚   └── https://deno.land/std/path/_constants.ts
  β”‚   β”œβ”€β”€ https://deno.land/std/path/separator.ts
  β”‚   β”œβ”€β”€ https://deno.land/std/path/_interface.ts
  β”‚   └─┬ https://deno.land/std/path/glob.ts
  β”‚     β”œβ”€β”€ https://deno.land/std/path/separator.ts
  β”‚     β”œβ”€β”¬ https://deno.land/std/path/_globrex.ts
  β”‚     β”‚ └── https://deno.land/std/path/_constants.ts
  β”‚     β”œβ”€β”€ https://deno.land/std/path/mod.ts
  β”‚     └── https://deno.land/std/_util/assert.ts
  β”œβ”€β”¬ https://deno.land/std/fs/ensure_dir.ts
  β”‚ └─┬ https://deno.land/std/fs/_util.ts
  β”‚   └── https://deno.land/std/path/mod.ts
  β”œβ”€β”¬ https://deno.land/std/fs/ensure_file.ts
  β”‚ β”œβ”€β”€ https://deno.land/std/path/mod.ts
  β”‚ β”œβ”€β”€ https://deno.land/std/fs/ensure_dir.ts
  β”‚ └── https://deno.land/std/fs/_util.ts
  β”œβ”€β”¬ https://deno.land/std/fs/ensure_link.ts
  β”‚ β”œβ”€β”€ https://deno.land/std/path/mod.ts
  β”‚ β”œβ”€β”€ https://deno.land/std/fs/ensure_dir.ts
  β”‚ β”œβ”€β”€ https://deno.land/std/fs/exists.ts
  β”‚ └── https://deno.land/std/fs/_util.ts
  β”œβ”€β”¬ https://deno.land/std/fs/ensure_symlink.ts
  β”‚ β”œβ”€β”€ https://deno.land/std/path/mod.ts
  β”‚ β”œβ”€β”€ https://deno.land/std/fs/ensure_dir.ts
  β”‚ β”œβ”€β”€ https://deno.land/std/fs/exists.ts
  β”‚ └── https://deno.land/std/fs/_util.ts
  β”œβ”€β”€ https://deno.land/std/fs/exists.ts
  β”œβ”€β”¬ https://deno.land/std/fs/expand_glob.ts
  β”‚ β”œβ”€β”€ https://deno.land/std/path/mod.ts
  β”‚ β”œβ”€β”¬ https://deno.land/std/fs/walk.ts
  β”‚ β”‚ β”œβ”€β”€ https://deno.land/std/_util/assert.ts
  β”‚ β”‚ └── https://deno.land/std/path/mod.ts
  β”‚ └── https://deno.land/std/_util/assert.ts
  β”œβ”€β”¬ https://deno.land/std/fs/move.ts
  β”‚ β”œβ”€β”€ https://deno.land/std/fs/exists.ts
  β”‚ └── https://deno.land/std/fs/_util.ts
  β”œβ”€β”¬ https://deno.land/std/fs/copy.ts
  β”‚ β”œβ”€β”€ https://deno.land/std/path/mod.ts
  β”‚ β”œβ”€β”€ https://deno.land/std/fs/ensure_dir.ts
  β”‚ β”œβ”€β”€ https://deno.land/std/fs/_util.ts
  β”‚ └── https://deno.land/std/_util/assert.ts
  β”œβ”€β”€ https://deno.land/std/fs/read_file_str.ts
  β”œβ”€β”€ https://deno.land/std/fs/write_file_str.ts
  β”œβ”€β”€ https://deno.land/std/fs/read_json.ts
  β”œβ”€β”€ https://deno.land/std/fs/write_json.ts
  β”œβ”€β”€ https://deno.land/std/fs/walk.ts
  └── https://deno.land/std/fs/eol.ts

View version

$ Trex --version

View help

$ Trex --help

To Do

  • install std modules and third party modules in deno.land/x.

  • delete modules from import_map.json.

  • support for custom module outside of deno third party modules.

  • sort modules names in import_map.json.

  • support to install tools like Commands.

    • if you want add your tool in database edit this file database.json
  • update using:

    • $ Trex update
  • support to choose install other versions of modules:

    • $ Trex install --map fs@0.50.0
  • safe installation for tools like Commands, velociraptor or dpx.

    • display a warning message with the permissions of the tool
  • check the versions of the libraries.

    • $ Trex --deps
  • System to cache package when install it. (!unstable):

    • it is currently being tested on windows and linux but it is an instable feature at the moment.

      note: by default it caches the modules using the mod.ts file, if it cannot find it, it does not add it to the cache but add to the import_map.json.

    • We are working to you can choose the target file

  • List all the tools you can install.

  • choose the destination file when installing a module.

    • $ Trex --custom djwt/create.ts=https://deno.land/x/djwt/create.ts