Skip to content

syumai/dem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

717d954 · Sep 2, 2021
Oct 26, 2020
Nov 23, 2020
Sep 2, 2021
Mar 12, 2020
Aug 26, 2019
Oct 3, 2020
Sep 2, 2021
May 19, 2020
Sep 2, 2021
May 19, 2020
May 19, 2020
Sep 2, 2021
Oct 26, 2020
Oct 3, 2020
May 19, 2020
Oct 3, 2020
May 20, 2020
Jun 27, 2020
May 19, 2020
Oct 3, 2020
Sep 2, 2021

Repository files navigation

dem

Build Status

  • A simple module version manager for Deno.
  • dem creates dem.json and links script files with version.
    • linked scripts are stored in vendor directory.
  • dem provides an easy way to update dependencies.

Example

Using https://deno.land/std/http/server.ts at v0.51.0

  • dem.json
    • generated file like a package.json
{
  "modules": [
    {
      "protocol": "https",
      "path": "deno.land/std",
      "version": "v0.51.0",
      "files": [
        "/http/server.ts"
      ]
    }
  ]
}
  • vendor/https/deno.land/std/http/server.ts
    • generated linked script includes version specified in dem.json
export * from "https://deno.land/[email protected]/http/server.ts";
  • example.ts
    • script to run
// You can import module without the version.
import { serve } from "./vendor/https/deno.land/std/http/server.ts";

Install

deno install --allow-read --allow-write --allow-net -f -n dem https://deno.land/x/[email protected]/cmd.ts

Usage

Getting Started

1. dem init to create dem.json

$ dem init
successfully initialized the project.

2. dem add to add module.

$ dem add https://deno.land/[email protected]
successfully added new module: https://deno.land/std, version: v0.51.0

3. Edit your script and import module from vendor.

example.ts

import * as path from './vendor/https/deno.land/std/fs/path.ts';

console.log(path.join(Deno.cwd(), 'example'));

4. dem ensure to resolve modules.

$ dem ensure
successfully created link: https://deno.land/[email protected]/fs/path.ts

5. Run your script.

$ deno example.ts

Standard Usage

Updating module

  • dem update updates versions in dem.json and linked scripts.
$ dem update https://deno.land/[email protected]
successfully updated module: https://deno.land/std, version: v0.52.0

Advanced Usage

Alias

  • With alias, shortened script paths are available.

example.ts

// Original
import * as dejs from "./vendor/https/deno.land/x/dejs/mod.ts"
// With alias
import * as dejs from "./vendor/dejs.ts"

How to use alias

  1. execute dem alias.
# create alias for module.
$ dem alias https://deno.land/x/dejs/mod.ts dejs.ts # ./vendor/dejs.ts will be created.
  1. import script using alias path
import * as dejs from "./vendor/dejs.ts"
  1. run dem ensure.
# create link for `./vendor/https/deno.land/x/dejs/mod.ts`.
$ dem ensure

Commands

dem init                                          # initialize dem.json
dem add https://deno.land/x/[email protected]            # add module `dejs` and set its version to `0.1.0`
dem link https://deno.land/x/dejs/mod.ts          # create link of `[email protected]/mod.ts` and put it into vendor.
dem update https://deno.land/x/[email protected]         # update module to `0.2.0`
dem unlink https://deno.land/x/dejs/mod.ts        # remove link of `[email protected]/mod.ts`.
dem remove https://deno.land/x/dejs               # remove module `dejs`
dem ensure                                        # resolve file paths of added modules used in project and link them.
dem prune                                         # remove unused modules and linked scripts.
dem alias https://deno.land/x/dejs/mod.ts dejs.ts # create alias for module and put it into vendor.
dem unalias dejs.ts                               # remove alias for module.

Unsupported features

  • default export
  • manage .d.ts file

Author

syumai

License

MIT