使用 Deno 运行 Node 项目,在 #NodeToDenoChallenge 中赢取奖品
2024年1月4日更新:挑战已结束!感谢所有参与者。在此处查看结果。
Deno 在过去一年里非常忙碌。我们发布了 Deno KV、Deno Queues、Deno Cron、Deno Subhosting、SaaSKit,并对 Fresh 进行了六次小版本更新,对 Deno CLI 进行了十次小版本更新……还有很多其他的。
今年我们最重要的举措之一是改进 Node 和 npm 的兼容性。npm 注册表是世界上最大的开源注册表,拥有许多有用的模块,我们希望您能在 Deno 中使用它们。自 Deno 1.28 中引入 npm:
说明符以来,我们增加了通过 node:
说明符对 Node 内置模块的支持,以及自带 node 模块的功能,更不用说持续进行的 Polyfill 和改进了。
为了鼓励大家在自己的 Node 项目中尝试 Deno,我们正在发起 #NodeToDenoChallenge。
从今天起到1月4日,在您的任何 Node 项目中运行 Deno,截取输出结果(无论成功或失败),并使用话题标签 #NodeToDenoChallenge
发布到 Twitter*。我们将随机抽取10名参与者,以及在代码行数最多的 Node 项目上尝试运行 Deno 的个人,并奖励他们一张价值100美元的 Deno 周边商店礼品卡。
*如果您不使用 Twitter,仍然可以参与!只需将您的成功或错误输出粘贴到 GitHub issues 或 Mastodon 上。只要我们能找到它即可。
如何参与
是的,现在是假日季,大家都不想做任何事,所以我们将参与流程尽可能简化。
- 选择任何 Node 项目。不必是应用或服务器。甚至可以是脚本。
- 如果需要,将导入语句更新为 ESM。这意味着将
const module = require("module");
替换为
import module from "module";
- 将以下
deno.json
文件添加到项目根目录,它将启用各种不稳定的 Node/npm 兼容性设置。
{
"unstable": [
"bare-node-builtins",
"byonm",
"sloppy-imports",
"unsafe-proto"
]
}
- 运行此命令
deno run -A $FILE
$FILE
是您在命令 node $FILE
中使用的任何文件。- 截取输出结果的屏幕截图,无论成功或失败。
- 在 Twitter 上分享,或创建 GitHub issue。(如果您想参与“最大 Node 项目”类别评选,则必须附上 GitHub 链接,以便我们验证代码行数。)
就这样!喝杯热可可,在炉火旁放松一下吧。
这些不稳定的 Node 兼容性设置是什么?
--unstable-bare-node-builtins
:从 1.30 版本开始支持,此标志允许您无需node:
说明符即可导入 Node.js 内置模块。--unstable-byonm
:“自带 node_modules”功能,从 1.38 版本开始支持,允许您将 Deno 与您选择的 npm 包管理器一起使用。--unstable-sloppy-imports
:从 1.39 版本开始支持,它放宽了 Deno 导入模块的要求(例如,导入语句不需要文件扩展名,假定为index.js
等)。请注意,不建议在一般情况下使用此功能。有关更多详细信息,请查看 PR。--unstable-unsafe-proto
:同样从 1.39 版本开始支持,此标志启用对Object.prototype.__proto__
的支持,许多 npm 包依赖它才能正常运行。再次提醒,出于安全原因,不建议在一般情况下使用此功能。
有关 Node/npm 与 Deno 互操作性的更多信息,请查看这些资源
奖品
1月4日,10名随机选取的参与者将赢得一张价值100美元的 Deno 周边商店礼品卡。多次提交不会增加被选中的机会。
此外,在代码行数最多的 Node 项目上尝试运行 Deno 的提交者将保证赢得一张100美元的礼品卡。(请注意,要获得此奖项的资格,您必须分享 GitHub 项目链接,以便我们验证代码行数。)
最后,为了鼓励大家宣传并与您的圈子分享,如果获得超过100份独立提交,我们将把礼品卡奖金从100美元提高到200美元。
我们将在 我们的 Discord 中跟踪提交总数。
结果
我们总共收到了47份提交,范围涵盖了从实用库(如 node-cbor
和 node-gamedig)、脚手架和构建工具(如 create-react-app
和 create-vite
)、VSCode 扩展管理器、个人网站、应用程序和机器人等。
提交的最大 Node 项目(按 JavaScript/TypeScript 代码行数计算)是 kibana
,拥有 3,212,395 行代码。该提交还包含了他们尝试的逐步说明,例如修改 require
语句、启用的 Deno 标志集以及移除一些 Node 版本验证。恭喜 hverlin
赢得了最大 Node 项目奖。
感谢所有参与者并帮助我们改进 Node 兼容性。如果您是10名随机选中的参与者之一,Deno 团队将通过 Twitter、Discord 或电子邮件联系您,提供奖品信息。