跳转到主要内容
在本页上

不稳定特性标志

Deno 运行时的新特性通常在特性标志后发布,以便用户在最终确定之前试用新的 API 和特性。当前不稳定的特性标志列在本页上,也可以通过运行以下命令在 CLI 帮助文本中找到

deno --help

在命令行中使用标志 跳转到标题

您可以通过将标志作为 CLI 的选项传入,在从命令行运行 Deno 程序时启用特性标志。以下是在启用 --unstable-byonm 标志的情况下运行程序的示例

deno run --unstable-byonm main.ts

deno.json 中配置标志 跳转到标题

您可以使用deno.json 中的配置选项指定要为项目启用的不稳定特性。

deno.json
{
  "unstable": ["bare-node-builtins", "webgpu"]
}

unstable 数组中的可能值是移除 `--unstable-` 前缀后的标志名称。

通过环境变量进行配置 跳转到标题

一些标志可以通过为给定名称的环境变量设置值(任何值)来启用,而不是作为标志或 deno.json 配置选项传递。可以通过环境变量设置的标志将在下面说明。

以下是如何通过环境变量设置 --unstable-bare-node-builtins 标志的示例:

export DENO_UNSTABLE_BARE_NODE_BUILTINS=true

--unstable-bare-node-builtins 跳转到标题

**环境变量:** DENO_UNSTABLE_BARE_NODE_BUILTINS

此标志允许您导入 Node.js 内置模块而无需使用 node: 说明符,如下例所示。如果您手动管理 Node.js 依赖项(请参阅 byonm 标志),您还可以使用此标志启用 npm 包而无需使用 npm: 说明符。

example.ts
import { readFileSync } from "fs";

console.log(readFileSync("deno.json", { encoding: "utf8" }));

--unstable-byonm 跳转到标题

**环境变量:** DENO_UNSTABLE_BYONM

此功能标志支持从您使用 npmpnpmyarn 在 Deno 之外管理的本地 node_modules 文件夹解析模块。这可以提高与对 npm 客户端的安装行为或 node_modules 文件夹的存在有严格要求的 Node.js 模块的兼容性。

在您的 Deno 项目文件夹中,包含一个声明您的依赖项的 package.json 文件,并像往常一样通过 npm 客户端管理它们。考虑一个具有以下依赖项的 package.json 文件:

package.json
{
  ...
  "dependencies": {
    "cowsay": "^1.5.0"
  }
  ...
}

您可以像往常一样使用以下命令安装它们:

npm install

之后,您可以在 Deno 程序中编写如下代码:

example.ts
import cowsay from "cowsay";

console.log(cowsay.say({
  text: "Hello from Deno using BYONM!",
}));

--unstable-sloppy-imports 跳转到标题

**环境变量:** DENO_UNSTABLE_SLOPPY_IMPORTS

此标志启用从不包含文件扩展名的导入中推断文件扩展名的行为。通常,下面的 import 语句会产生错误:

foo.ts
import { Example } from "./bar";
console.log(Example);
bar.ts
export const Example = "Example";

启用宽松导入执行脚本将消除错误,但会提供应使用更高效语法的指导。

宽松导入将允许(但会打印警告)以下内容:

  • 从导入中省略文件扩展名
  • 使用不正确的文件扩展名(例如,当实际文件为 .ts 时使用 .js 扩展名导入)
  • 导入目录路径,并自动使用 index.jsindex.ts 作为该目录的导入

deno compile 不支持宽松导入。

--unstable-unsafe-proto 跳转到标题

出于安全原因,Deno 做出了不支持 Object.prototype.__proto__ 的有意识决定。然而,仍然有许多 npm 包依赖于此属性才能正常工作。

此标志启用此属性。请注意,不建议使用此属性,但如果您确实需要使用依赖于它的包,现在可以使用此应急方法。

--unstable-webgpu 跳转到标题

像在浏览器中一样,在全局作用域中启用 WebGPU API。以下是一个使用此 API 获取 GPU 基本信息的简单示例:

// Try to get an adapter from the user agent.
const adapter = await navigator.gpu.requestAdapter();
if (adapter) {
  // Print out some basic details about the adapter.
  const adapterInfo = await adapter.requestAdapterInfo();

  // On some systems this will be blank...
  console.log(`Found adapter: ${adapterInfo.device}`);

  // Print GPU feature list
  const features = [...adapter.features.values()];
  console.log(`Supported features: ${features.join(", ")}`);
} else {
  console.error("No adapter found");
}

查看此代码库以获取更多 WebGPU 使用示例。

--unstable-broadcast-channel 跳转到标题

启用此标志使 BroadcastChannel Web API 可在全局范围内使用,就像在浏览器中一样。

--unstable-worker-options 跳转到标题

启用不稳定的 Web Worker API 选项。 具体来说,它使您可以指定 worker 可用的权限。

new Worker(`data:application/javascript;base64,${btoa(`postMessage("ok");`)}`, {
  type: "module",
  deno: {
    permissions: {
      read: true,
    },
  },
}).onmessage = ({ data }) => {
  console.log(data);
};

--unstable-cron 跳转到标题

启用此标志使 Deno 命名空间中的 Deno.cron API 可用。

--unstable-kv 跳转到标题

启用此标志使 Deno 命名空间中的 Deno KV API 可用。

--unstable-net 跳转到标题

Deno 命名空间中启用不稳定的网络 API。 这些 API 包括:

--unstable 跳转到标题

--unstable 已弃用 - 请改用更细粒度的标志。

--unstable 标志不再用于新功能,并将在未来的版本中删除。 所有使用此标志可用的不稳定功能现在都作为更细粒度的不稳定标志提供,特别是:

  • --unstable-kv
  • --unstable-cron

请将来使用这些功能标志。

在较早的 Deno 版本 (1.38+) 之前,不稳定的 API 可通过 --unstable 标志一次性启用。 值得注意的是,Deno KV 和其他云原生 API 都在此标志之后可用。 要运行可访问这些不稳定功能的程序,您可以使用以下命令运行脚本:

deno run --unstable your_script.ts

建议您使用更细粒度的不稳定标志,而不是使用 --unstable 标志,该标志现已弃用,并将在 Deno 2 中删除。