使用 Deno 运行 Node 项目,并在 #NodeToDenoChallenge 挑战赛中赢取奖品
更新 2024/01/04:挑战赛已结束!感谢所有参与者。在此处阅读结果。
对于 Deno 来说,今年是忙碌的一年。我们发布了 Deno KV、Deno Queues、Deno Cron、Deno Subhosting、SaaSKit,为 Fresh 交付了六次小版本更新,为 Deno CLI 交付了 10 次小版本更新……等等。
我们今年最大的举措之一是改进 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 项目。不必是应用程序或服务器。甚至可以是脚本。
- 如有必要,请更新 import 语句为 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.js 内置模块,而无需node:
说明符。--unstable-byonm
: “自带 node_modules”功能,自 1.38 版本起支持,允许您将 Deno 与您选择的 npm 包管理器一起使用。--unstable-sloppy-imports
: 自 1.39 版本起支持,它放宽了 Deno 导入模块的要求(例如,import 语句不需要文件扩展名,假定为index.js
等)。请注意,不建议在一般情况下使用。有关更多详细信息,请查看 PR。--unstable-unsafe-proto
: 也自 1.39 版本起支持,此标志启用对Object.prototype.__proto__
的支持,许多 npm 包依赖此功能才能正常运行。同样,出于安全原因,不建议在一般情况下使用。
有关 Deno 中 Node/npm 互操作性的更多信息,请查看以下资源
奖品
在 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 或电子邮件与您联系,告知奖品信息。