Deno 1.34 发布,deno compile 命令支持 npm 包

来源: OSCHINA
编辑:
2023-05-26 12:09:54

Deno 1.34 已正式发布,主要更新内容是优化与 npm 和 Node.js 的兼容性,从而整体提升开发者体验,并为未来的性能增强奠定基础。

值得关注的变化:

从 Deno v1.6 开始, deno compile支持将项目编译成单个二进制可执行文件,可方便开发者:

  • 在所有主要平台上分发和执行二进制文件,无需安装 Deno 或依赖项
  • 在可执行文件中包含资源以提高可移植性
  • 使用单个二进制文件简化部署
  • 实现更快的启动时间

经过多个版本的迭代,deno compile已支持 Web Worker 和动态导入,最新版本已支持 npm 包。

下面是一个使用cowsay创建独立二进制可执行文件的示例:

$ cat main.ts
import { say } from "npm:cowsay@1.5.0";
console.log(say({ text: "Hello from Deno!" }));

$ deno compile --allow-read main.ts
$ ./main
 __________________
< Hello from Deno! >
 ------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

该功能对于经常使用 IP 地址而不是域名的 Kubernetes pod,以及需要服务器 IP 地址以避免对名称解析的循环依赖的 HTTPS/TLS 上的 DNS 非常有用。

在 Deno v1.34 中,任何使用 TLS 的 API 都支持使用 IP 地址。例如:

const resp = await fetch("https://1.1.1.1");
console.log(await resp.text());

其他改进和错误修复:

此前如果 Deno 需要忽略每个子命令的文件或文件夹,需要重复指定:

{
  "fmt": {
    "exclude": ["target/"]
  },
  "lint": {
    "exclude": ["target/"]
  },
  "test": {
    "exclude": ["target/"]
  },
  "bench": {
    "exclude": ["target/"]
  }
}

 从这个版本开始,可以直接使用顶层exclude属性:

{
  "exclude": ["target/"]
}

详情查看发布公告

展开阅读全文
点击加入讨论🔥(3) 发布并加入讨论🔥
本篇精彩评论
就是打包以后体积有点大,一个helloworld就70MB+,和node打包大小差不多,如果使用7z等压缩一下,差不多20MB+
2023-05-26 12:54
1
举报
3 评论
1 收藏
分享
返回顶部
顶部