跳到主要内容

使用 Deno 构建脚本和 CLI


为什么选择 Deno?

使用 Deno 编写脚本快速、简单且高效。 无需单独步骤来安装依赖项、配置 TypeScript、设置 linter、格式化程序、测试运行器或工具链的任何其他部分。

例如,您可以编写 TypeScript,在首次运行脚本时立即安装模块及其类型定义

import cowsay from "npm:[email protected]";

let output: string = cowsay.say({ text: "Hello from typescript!" });

console.log(output);

当我们第一次运行它时,它会安装所有依赖项并缓存它们

$ deno run --allow-read main.ts

 ________________________
< Hello from typescript! >
 ------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Web 平台 API

使用 Deno 编写脚本更轻松,因为它具有内置的 Web 平台 API。 这使得访问网络、解析 HTTP 响应等操作变得简单直观。

const res = await fetch("https://examples.deno.land/hello-world.ts");
const text = await res.text();
console.log(text);

运行此脚本,我们可以看到脚本的主体

$ deno run --allow-net main.ts
console.log("Hello, World!")
Node 呢?
Node.js 不使用 Web 平台 API,因此您需要导入 `node:http` 或第三方依赖项才能访问网络并发出 HTTP 请求。 详细了解这如何导致 JavaScript 臃肿、依赖项难题等问题。

共享和分发

Deno 可以通过 URL 执行程序和脚本,因此共享脚本就像将脚本托管在 gist.github.com 上一样简单。 脚本示例为 https://examples.deno.land/hello-world.ts,您可以从 URL 运行它

$ deno run https://examples.deno.land/hello-world.ts
Hello, World!
Node 呢?
在 Node.js 中,共享简单的 JavaScript 脚本需要以 `package.json` 文件形式存在的依赖项清单。 Deno 的构建方式类似于浏览器——它可以直接从 URL 运行任何脚本。 了解 Node 与浏览器和 Web 标准的背离如何导致不必要的复杂性。

如果您想将您的 JavaScript 或 TypeScript 程序作为二进制文件共享,Deno 的一体化现代工具链包括 deno compile,它可以轻松地将您的脚本编译成单个可移植的二进制文件,您可以在所有主要平台上共享该文件。

$ deno compile --allow-net ./main.ts
Compile file:///deno/main to main

$ ./main
console.log("Hello, World!")

其他资源

以下是一些关于使用 Deno 编写脚本或 CLI 的示例、博客文章和视频。