在本页
不稳定功能标志
Deno 运行时的许多新功能通常在功能标志之后发布,因此用户可以在功能最终确定之前尝试新的 API 和功能。当前不稳定的功能标志列在本页上,也可以通过运行以下命令在 CLI 帮助文本中找到
deno --help
在命令行中使用标志 跳转到标题
您可以在从命令行运行 Deno 程序时,通过将标志作为 CLI 的选项传递来启用功能标志。以下是如何使用 --unstable-byonm
标志运行程序的示例
deno run --unstable-byonm main.ts
在 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:
说明符。
import { readFileSync } from "fs";
console.log(readFileSync("deno.json", { encoding: "utf8" }));
--unstable-byonm
跳转到标题
环境变量:DENO_UNSTABLE_BYONM
此功能标志支持从您使用 npm、pnpm 或 yarn 在 Deno 之外管理的本地 node_modules
文件夹解析模块。这可能会提高与对 npm 客户端的安装行为或 node_modules
文件夹的存在有严格要求的 Node.js 模块的兼容性。
在您的 Deno 项目文件夹中,包含一个 package.json
文件,该文件声明您的依赖项,并像往常一样通过 npm 客户端管理它们。考虑一个具有以下依赖项的 package.json
{
...
"dependencies": {
"cowsay": "^1.5.0"
}
...
}
您将像往常一样安装它们
npm install
之后,您可以在 Deno 程序中编写如下代码
import cowsay from "cowsay";
console.log(cowsay.say({
text: "Hello from Deno using BYONM!",
}));
--unstable-sloppy-imports
Jump to heading
环境变量: DENO_UNSTABLE_SLOPPY_IMPORTS
此标志启用一种行为,该行为将从不包含文件扩展名的导入中推断文件扩展名。通常,以下导入语句会导致错误
import { Example } from "./bar";
console.log(Example);
export const Example = "Example";
在启用松散导入的情况下执行脚本将消除错误,但会提供有关应使用更高效语法的指导。
松散导入将允许(但会打印警告)以下内容
- 从导入中省略文件扩展名
- 使用不正确的文件扩展名(例如,使用
.js
扩展名导入,而实际文件为.ts
) - 导入目录路径,并自动使用
index.js
或index.ts
作为该目录的导入
deno compile
不支持松散导入。
--unstable-unsafe-proto
Jump to heading
Deno 为了安全原因,有意决定不支持 Object.prototype.__proto__
。但是,仍然有许多 npm 包依赖于此属性才能正常工作。
此标志启用此属性。请注意,不建议使用此属性,但如果您确实需要使用依赖于此属性的包,则现在可以使用此方法。
--unstable-webgpu
Jump to heading
在全局范围内启用 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
Jump to heading
启用此标志将使 BroadcastChannel
web API 可供在全局范围内使用,就像在浏览器中一样。
--unstable-worker-options
Jump to heading
启用不稳定的 Web Worker API 选项。具体来说,它使您可以指定可用于工作者的权限
new Worker(`data:application/javascript;base64,${btoa(`postMessage("ok");`)}`, {
type: "module",
deno: {
permissions: {
read: true,
},
},
}).onmessage = ({ data }) => {
console.log(data);
};
--unstable-cron
Jump to heading
启用此标志将使 Deno.cron
API 在 Deno
命名空间中可用。
--unstable-kv
Jump to heading
启用此标志将使 Deno KV API 在 Deno
命名空间中可用。
--unstable-ffi
Jump to heading
启用不稳定的 FFI API - 了解有关 FFI 的更多信息.
--unstable-fs
Jump to heading
在 Deno
命名空间中启用不稳定的文件系统 API。这些 API 包括
--unstable-net
Jump to heading
在 Deno
命名空间中启用不稳定的网络 API。这些 API 包括
Deno.DatagramConn
- 更多 - 有关最新列表,请在 API 参考 中选中“显示不稳定 API”复选框
--unstable
Jump to heading
--unstable
标志不再用于新功能,并将从将来的版本中删除。所有使用此标志可用的不稳定功能现在都以细粒度不稳定标志的形式提供,特别是
--unstable-kv
--unstable-cron
请从现在开始使用这些功能标志。
在较新的 Deno 版本(1.38+)之前,不稳定 API 是通过 --unstable
标志一次性提供的。值得注意的是,Deno KV 和其他云原生 API 在此标志后面可用。要运行一个可以使用这些不稳定功能的程序,你需要使用以下命令运行你的脚本:
deno run --unstable your_script.ts
建议你使用粒度化的不稳定标志而不是这个标志,--unstable
标志现在已被弃用,将在 Deno 2 中移除。