关于deno:手把手教你发布一个deno模块

42次阅读

共计 2498 个字符,预计需要花费 7 分钟才能阅读完成。

Node.js 的包管理工具是 npm,而对于 deno 而言,任何一个资源服务器都能够是资源的提供方,一般来说,它是一个 CDN 网站。
除了比拟出名的用来转换 node 包的 https://cdn.skypack.dev/ 和 https://esm.sh/ 之外,官网的 CDN 地址是这里:https://deno.land/x。

如何公布模块

如何公布一个 deno 的模块?
操作其实很简略。

  1. 前提是你有一个 github 账号,新建一个对外开放的工程。
  2. 公布前,在你的工程里,最好先配置好标签与形容。标签用来在 deno.land 中搜寻,形容便于其余开发者理解你的用图。

  1. 回到 https://deno.land/ x 页面。点击 Publish a module, 呈现以下弹窗:

  1. 点击下一步
  2. 填写一个惟一的模块名称,比方 xx_test。如果没有反复的,就能够点击下一步。
  3. 填写要公布的工程中文件夹门路,个别状况下咱们都是根目录,不填即可。

  1. 下一步是提醒页面
  2. 按上一步的提醒一步步就能够实现了。这里我再具体点,到咱们的 github 工程,找到设置 -Webhooks,点击减少 webhook 按钮。
  3. 填写Payload URL 为提醒页面的地址;批改 Content-type 为 application/json。
  4. 抉择 Which events would you like to trigger this webhook? 的最初一项。只勾选第一个。
  5. 点击 Add webhook 按钮
  6. 页面会主动回到这里,看到有了一条记录。
  7. 点击编辑,会有 2 个 tab 页,第一个就是你方才配置的页面,第二个是你当前所有 hooks 的状态。如果失败了,能够在这里看详细信息。
  8. 你的工程应用 git 打标签,如 git tag -a v0.0.1 -m “feat: xxx”,推送到 github,就会触发 hooks。
  9. 回到 https://deno.land/x,在上面就能看到你新推送的模块了。
  10. 点击你的带版本号的工程,能够看到弹出的地址是 https://deno.land/x/xx_test@v…。每有一个新 tag 的推送,就会有一个新的版本。

须要留神的一点是,deno 对集体公布模块的数量限度为 15 个,超过须要向管理员发邮件(modules@deno.com)申请,所以没事儿不要发垃圾的包上去,撤销也是须要向管理员申请的,而且也不肯定会通过。

疾速公布

个别状况下,咱们须要在根目录下创立一个 README.md,阐明你的模块性能与应用办法。
以我的工程 oak_nest 为例,通常有段应用示例:

import {
  Body,
  Context,
  UseGuards,
} from "https://deno.land/x/oak_nest@v1.2.1/mod.ts";

示例里有你的模块地址,这个地址的版本号如果每次公布都要手动批改,那就太麻烦了。

全局装置一个命令:

deno install --allow-read --allow-write --allow-run --unstable -n deno_tag -f https://deno.land/x/jw_cli@v0.2.7/cli/tag/mod.ts

在根目录下创立一个 scripts.yml 文件,内容大抵如下:

version: 0.0.1
name: xx_test

之后就能够应用 deno_tag 来更新版本,并推送到服务器。具体阐明具体见这里。

版本更新

版本号更新的命令应用 patch/minor/major,与 npm 的一样。

deno_tag
deno_tag patch # 与下面等价
deno_tag minor
deno_tag major

会更新根目录下的 scripts.yml 文件和 README.md,如果后者有应用 scripts.yml 中配置的 name,将会对应替换。
比方工程的名称为 oak_nest@v1.2.1,那么执行 deno_tag 后,README.md 中 oak_nest@v1.2.1 会对应替换为 oak_nest@v1.2.2。
如果执行 deno_tag minor 后,README.md 中 oak_nest@v1.2.1 会对应替换为 oak_nest@v1.3.0。
如果执行 deno_tag major 后,README.md 中 oak_nest@v1.2.1 会对应替换为 oak_nest@v2.0.0。

版本号不以 v 结尾

假如你推送的 tag 版本号不想以 v 结尾,那么能够增加一个参数 - L 或者 –local:

deno_tag patch -L

增加自定义信息

打标签时默认提交信息是版本号,如果想自定义信息,能够应用 - M 或者 –msg:

deno_tag minor -M "feat: change some"

更新所有目录的 README.md 文件

如果想要更新所有目录的 README.md 文件,能够应用 - D 或者 –deep:

deno_tag -D

本地调试

如果你的另一个我的项目中应用这个模块,那可能会遇到调试问题,如果每次公布都推送一次,那太不合理了(尽管你能够这么干,github 的 hooks 也是秒级的)。
你能够在本地启动一个服务器。

  1. 全局装置 file_server

    deno install --allow-net --allow-read https://deno.land/std@0.125.0/http/file_server.ts
  2. 在你的模块目录下,执行命令:

    $ file_server .
    Downloading https://deno.land/std@0.125.0/http/file_server.ts...
    [...]
    HTTP server listening on http://0.0.0.0:4507/
  3. 这样关上 http://0.0.0.0:4507/ 就能够看到当前目录的文件了。
  4. 你在另一个工程里应用这个地址就能够进行调试了。须要留神的一点是,你原来是这样运行代码的:

    deno run -A aa.ts 

    当初须要换成:

    deno run -A --reload=http://localhost:4507/ aa.ts 

    不然永远用的是旧的代码。

总结

本文介绍了如何利用 github 的 hooks 来公布一个 deno 模块到 deno.land 上,如何疾速更新版本,如何本地调试。

正文完
 0