Deno 开发环境配置

Deno 官方网站为 https://deno.land,v1.0.0 正式版于 2020-05-14 日发布。以下介绍的安装配置是完全绿化方式的安装。

1. 下载 zip 安装包

Deno 官方下载地址为 https://github.com/denoland/deno/releases,对应各平台的
当前(2020-05-23)最新版 1.0.2 下载地址为:

OS URL
macOS https://github.com/denoland/deno/releases/download/v1.0.2/deno-x86_64-apple-darwin.zip
Linux https://github.com/denoland/deno/releases/download/v1.0.2/deno-x86_64-unknown-linux-gnu.zip
Windows https://github.com/denoland/deno/releases/download/v1.0.2/deno-x86_64-pc-windows-msvc.zip

国内下载不了的,可以使用代理科学下载:

$ curl -x http://$PROXY_HOST:$PROXY_PORT -LO $URL
如:
$ curl -x http://127.0.0.1:1081 -LO https://github.com/denoland/deno/releases/download/v1.0.2/deno-x86_64-apple-darwin.zip

2. 解压安装

安装目录随意,解压后将得到唯一的一个可执行文件:

  • macOS 和 Linux 平台是 deno
  • Windows 平台是 deno.exe

Deno 承诺每次发布的版本都是单一的可执行文件,简单至上。如果是 macOS 或 Linux 平台,需要对解压后得到的 deno 可执行文件添加执行权限:

$ chmod +x deno
或者
$ chmod 755 deno

Deno 官方安装脚本默认行为:

  1. deno 可执行文件安装到 $HOME/.deno/bin/deno
  2. 设置环境变量 DENO_INSTALL=$HOME/.deno
  3. $DENO_INSTALL/bin 添加到 PATH 环境变量。

3. 验证安装成功

macOS 或 Linux:

$ ./deno --version
deno 1.0.2
v8 8.4.300
typescript 3.9.2

Windows:

> ./deno.exe --version
deno 1.0.2
v8 8.4.300
typescript 3.9.2

看到上述输出的版本号信息就证明 Deno 安装成功。

4. 添加系统环境变量

为了方便可以在终端直接使用 deno 命令,将可执行文件 deno(Windows 平台为 deno.exe)所在目录添加到系统环境变量 PATH(Windows 平台为 Path)中即可。

Deno 下载的依赖和编译生成的文件默认缓存在环境变量 DENO_DIR 指定的目录下,如果未设置 DENO_DIR 环境变量,则默认为系统的缓存目录:

  • macOS: $HOME/Library/Caches/deno
  • Linux/Redox: $XDG_CACHE_HOME/deno$HOME/.cache/deno
  • Windows: %LOCALAPPDATA%/deno (%LOCALAPPDATA% = FOLDERID_LocalAppData),如 $HOME/AppData/Local/deno
  • 其它意外情况,使用 $HOME/.deno 代替

See here。使用 deno info 命令也可以查看到相关信息。
来自《官方参考文档/Setup your environment》。

5. 升级

执行如下命令即可:

$ deno upgrade

如果要使用代理来升级,则只需设置环境变量 HTTP_PROXYHTTPS_PROXY 为相应的代理地址即可。以下为 PowerShell 使用命令临时设置代理的例子:

> $HTTP_PROXY = "http://127.0.0.1:10087"

6. 官方 welcome.ts 例子

执行如下脚本,是官方入门教程中最简单的例子:

$ deno run https://deno.land/std/examples/welcome.ts
Welcome to Deno 🦕

其中 welcome.ts 的源码为:

console.log("Welcome to Deno 🦕");

执行上述脚本后,Deno 会从地址 https://deno.land/std/examples/welcome.ts 下载源码到 $DENO_DIR/deps/https/deno.land/8645fc194e64a260ce809466851e4586f3adac3e6090ba74445a4a223359becb,在此文件同级目录下有个文件 8645fc194e64a260ce809466851e4586f3adac3e6090ba74445a4a223359becb.metadata.json,记录了下载地址和 headers 信息,如:

{
  "headers": {
    "x-cache": "HFM, HIT",
    "via": "1.1 varnish (Varnish/6.0), 1.1 varnish",
    "expires": "Sun, 24 May 2020 05:54:53 GMT",
    "etag": "W/\"6531bda307649347e4b7c8eb0dfc61ffd4518fdb8766060843124417e54cbd3f\"",
    "x-timer": "S1590299393.413330,VS0,VE290",
    "x-xss-protection": "1; mode=block",
    "cf-cache-status": "DYNAMIC",
    "vary": "Authorization,Accept-Encoding",
    "access-control-allow-origin": "*",
    "content-type": "application/typescript; charset=utf-8",
    "content-security-policy": "default-src 'none'; style-src 'unsafe-inline'; sandbox",
    "set-cookie": "__cfduid=d7373163313218def499fb566afe059461590299393; expires=Tue, 23-Jun-20 05:49:53 GMT; path=/; domain=.deno.land; HttpOnly; SameSite=Lax; Secure",
    "cf-ray": "5984bc688e82124c-HKG",
    "strict-transport-security": "max-age=31536000",
    "expect-ct": "max-age=604800, report-uri=\"https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct\"",
    "x-cache-hits": "0, 1",
    "x-frame-options": "deny",
    "x-github-request-id": "6012:3CCF:200CA8:28C4FD:5EC9EDA5",
    "x-served-by": "cache-hkg17921-HKG",
    "server": "cloudflare",
    "cf-request-id": "02e6d415500000124cf302f200000001",
    "x-content-type-options": "nosniff",
    "x-deno-warning": "Implicitly using master branch https://deno.land/std/examples/welcome.ts",
    "x-fastly-request-id": "b999cc4788708ec8666da866861aa61c8933c4c0",
    "source-age": "0",
    "cache-control": "max-age=300",
    "date": "Sun, 24 May 2020 05:49:53 GMT"
  },
  "url": "https://deno.land/std/examples/welcome.ts"
}

welcome.ts 文件会编译为 js 文件保存为如下 3 个文件:

$DENO_DIR/gen/https/deno.land/std/examples/
  |- welcome.ts.js
  |- welcome.ts.js.map
  |- welcome.ts.meta

文件内容如下所示:

$ cat welcome.ts.js
"use strict";
console.log("Welcome to Deno 🦕");
//# sourceMappingURL=file://$DENO_DIR/gen/https/deno.land/std/examples/welcome.ts.js.map

$ cat welcome.ts.js.map 
{
  "version":3,
  "file":"file://$DENO_DIR/gen/https/deno.land/std/examples/welcome.ts.js",
  "sources":["https://deno.land/std/examples/welcome.ts"],
  "names":[],
  "mappings":";AAAA,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC"
}

$ cat welcome.ts.meta 
{
  "source_path": "$DENO_DIR/deps/https/deno.land/8645fc194e64a260ce809466851e4586f3adac3e6090ba74445a4a223359becb",
  "version_hash": "061c16e7765599f2afca7cf9fcc6b9cdf571d733adbe0af8068e1b1105298d6a"
}

文件内容做了相应格式化排版以方便查看,$DENO_DIR 为我自行改写的占位符,代替了实际的盘符路径。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351