4

Deno 1.6 支持将 Deno 项目编译成独立的可执行文件

 3 years ago
source link: https://www.infoq.cn/article/0lsGR6lGWctq5NogpNrw
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Deno 1.6 引入了 将Deno项目编译成独立的可执行文件的功能 ,这种文件在 Deno 1.7中被进一步缩小 (高达 60%)。Deno 现在有一个专门的语言服务器,旨在提升 Deno 开发者在代码编辑器中的体验。Deno 还增加了对 data URL 的支持,使计算机生成的代码能够得以执行。

Deno 1.6 的发布说明对新的编译工具链做出了如下的阐述:

deno compile 为 Deno 所做的事情类似于 nexe pkg 为 Node 所做的事情:根据 JavaScript 或 TypeScript 源码创建一个独立的、自包含的二进制文件。这是 Deno issue 跟踪器上被投票最多的一个问题。

将 Deno 应用编译成自包含的二进制文件解决了与 Node 或 Nectarjs JavaScript原生编译器 相同的使用场景。例如,有些开发人员可能想要为他们的应用程序创建一个闭源的商业方案/演示/试用版本;将他们的应用作为一个单独的文件部署在一系列的平台上,或者为了实现可移植性,在可执行文件中合并其他资产。

发布说明提供了一个使用新编译特性的样例:

Deno 编译器可以将代码编译到任意支持的架构(Windows x64、MacOS x64 和 Linux x64),这与执行编译的计算机所使用的架构无关。这意味着,一台 Linux 机器能够创建适用于 Windows 或 MacOS 的可执行文件。借助 --lite 选项(Deno 1.7 中可用),所生成的二进制文件能够小 40-60%。 deno compile 还可以创建内置 CA 证书、自定义 V8 标记、限定的 Deno 权限以及预填充命令行参数的二进制文件。然而,它也有一些限制。Deno 编译器不支持 web workers动态导入

Deno 1.6 引入了一个新的 lsp 子命令,它会启动一个实现了 语言服务器协议(Language Server Protocol,LSP)的语言服务器 。LSP 定义了代码编辑器或集成开发环境与语言服务器之间的协议,从而能够提供一些便利的特性,比如代码补全、跳至定义处(go-to-definition)或代码 lint。目前, deno lsp 实现了 代码补全、悬停提示、跳至定义处和跳至引用处等操作。 Deno VSCode扩展 目前还没有支持 deno lsp

Deno 1.7 添加了对 data URL的支持 。如下的 data URL "data:application/typescript;base64,ZXhwb3J0IGNvbnN0IGEgPSAiYSI7CgpleHBvcnQgZW51bSBBIHsKICBBLAogIEIsCiAgQywKfQo=" 对下文所示的 TypeScript 源码进行了 base64 编码:

export  const a =  "a";export  enum  A  {  A,  B,  C,}

复制代码

在 data URL 中编码的代码可以通过常规的导入语法进行导入( import * as a from "data:application/typescript;base64,..." )。该特性对于执行动态生成的内容特别有用。类似的特性被用来实现 Svelte前端框架的交互式训练场 。训练场用户在文本域中输入的源码会被预处理、打包、 通过URL对象进行导入 、执行并在预览面板中展现。Data URL 也可以用于 web workers 中。

Deno 1.61.7 的发布说明详细介绍了该版本的其他小功能。Deno 是一款开源软件,采用 MIT 许可证。我们鼓励通过 Deno项目 进行贡献,并应遵循 Deno贡献指南

原文链接:

[Deno Now Compiles to Self-Contained, Standalone Binaries](


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK