使用 Deno 运行 Node 项目并赢得 #NodeToDenoChallenge 的奖品
更新 2024/01/04:挑战已结束!感谢所有参与者。请在此处查看结果.
在 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
发布。我们将随机抽取 10 位参与者,以及尝试在代码行数最多的 Node 项目中运行 Deno 的个人,并奖励他们 100 美元的礼品卡,可用于 Deno 商品店。
*如果您没有使用 Twitter,您仍然可以参与!只需将您的成功或错误输出粘贴到 GitHub 问题 或 Mastodon 上。只要我们能找到它。
如何参与
是的,现在是假日季节,没有人愿意做任何事情,所以我们尽可能地简化了参与流程
- 选择任何 Node 项目。不需要是应用程序或服务器。甚至可以是一个脚本。
- 如有必要,将导入语句更新为 ESM。这意味着要替换
const module = require("module");
为
import module from "module";
- 将以下
deno.json
文件添加到项目的根目录,该文件启用了 各种不稳定的 Node/npm 兼容性设置。
{
"unstable": [
"bare-node-builtins",
"byonm",
"sloppy-imports",
"unsafe-proto"
]
}
- 运行以下命令
- 截取输出截图,无论成功还是失败。
- 在 Twitter 上分享或 创建 GitHub 问题。(如果您想获得“最大 Node 项目”类别资格,那么您还必须提供指向 GitHub 项目的链接,以便我们验证代码行数。)
就这样!喝一杯热可可,在炉火旁放松一下。
这些不稳定的 Node 兼容性设置是什么?
--unstable-bare-node-builtins
:从 1.30 版本开始支持,此标志允许您 导入 Node.js 内置模块,无需node:
指定符。--unstable-byonm
:从 1.38 版本开始支持的“自备 node_modules”功能,允许您将 Deno 与您选择的 npm 包管理器一起使用。--unstable-sloppy-imports
:从 1.39 版本开始支持,它放宽了 Deno 导入模块的要求(例如,导入语句不需要文件扩展名,假设为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 或电子邮件上与您联系,告知奖品信息。