https://github.com/syumai/dem
A module version manager for Deno.
https://github.com/syumai/dem
deno typescript
Last synced: about 2 months ago
JSON representation
A module version manager for Deno.
- Host: GitHub
- URL: https://github.com/syumai/dem
- Owner: syumai
- License: mit
- Created: 2019-08-26T04:08:43.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-10-16T14:48:20.000Z (over 3 years ago)
- Last Synced: 2024-10-13T00:17:07.893Z (7 months ago)
- Topics: deno, typescript
- Language: TypeScript
- Homepage:
- Size: 122 KB
- Stars: 61
- Watchers: 5
- Forks: 2
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
- awesome-list - dem
README
# dem
[](https://github.com/syumai/dem/actions)
- 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```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````ts
export * from "https://deno.land/[email protected]/http/server.ts";
```- `example.ts`
- script to run```ts
// You can import module without the version.
import { serve } from "./vendor/https/deno.land/std/http/server.ts";
```## Install
```sh
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`
```sh
$ dem init
successfully initialized the project.
```#### 2. `dem add` to add module.
```sh
$ 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`
```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.
```sh
$ dem ensure
successfully created link: https://deno.land/[email protected]/fs/path.ts
```#### 5. Run your script.
```sh
$ deno example.ts
```## Standard Usage
### Updating module
* `dem update` updates versions in `dem.json` and linked scripts.
```sh
$ 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`
```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`.
```sh
# create alias for module.
$ dem alias https://deno.land/x/dejs/mod.ts dejs.ts # ./vendor/dejs.ts will be created.
```2. import script using alias path
```ts
import * as dejs from "./vendor/dejs.ts"
```3. run `dem ensure`.
```sh
# create link for `./vendor/https/deno.land/x/dejs/mod.ts`.
$ dem ensure
```## Commands
```sh
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
- [x] default export
- [ ] manage `.d.ts` file## Author
syumai
## License
MIT