跳转至主要内容
Run a Node project with Deno.

使用 Deno 运行 Node 项目,并在 #NodeToDenoChallenge 挑战赛中赢取奖品

更新 2024/01/04:挑战赛已结束!感谢所有参与者。在此处阅读结果

对于 Deno 来说,今年是忙碌的一年。我们发布了 Deno KVDeno QueuesDeno CronDeno SubhostingSaaSKit,为 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 issuesMastodon 上即可。只要我们能找到它。

如何参与

是的,现在是假期,没人有心思做任何事,所以我们将参与过程尽可能简化

  1. 选择任何 Node 项目。不必是应用程序或服务器。甚至可以是脚本。
  2. 如有必要,请更新 import 语句为 ESM。这意味着替换
const module = require("module");

import module from "module";
  1. 将以下 deno.json 文件添加到项目的根目录,该文件启用了各种不稳定的 Node/npm 兼容性设置
{
  "unstable": [
    "bare-node-builtins",
    "byonm",
    "sloppy-imports",
    "unsafe-proto"
  ]
}
  1. 运行此命令
deno run -A $FILE
$FILE 是您在命令 node $FILE 中使用的任何文件。
  1. 截取输出的屏幕截图,无论成功与否。
  2. Twitter 上分享,或创建 GitHub issue。(如果您想参与“最大的 Node 项目”类别,则还必须包含 GitHub 链接,以便我们验证代码行数。)

就是这样!喝杯可可,在火炉旁舒适地待着吧。

这些不稳定的 Node 兼容性设置是什么?

有关 Deno 中 Node/npm 互操作性的更多信息,请查看以下资源

奖品

在 1 月 4 日,10 名随机选出的参与者将赢得一张价值 100 美元的礼品卡,可在 Deno 商品商店中使用。多次提交不会增加被选中的机会。

此外,尝试在代码行数最多的 Node 项目上运行 Deno 的提交作品保证赢得一张价值 100 美元的礼品卡。(请注意,为了获得此奖项的资格,您必须分享 GitHub 项目的链接,以便我们验证代码行数。)

最后,为了鼓励大家广而告之并与您的圈子分享,如果我们收到超过 100 份独特的提交作品,我们将把礼品卡奖金从 100 美元提高到 200 美元

我们将在我们的 Discord 中跟踪提交作品的总数。

结果

我们总共收到了 47 份提交作品,范围从实用程序库(如 node-cbornode-gamedig)、脚手架和构建工具(如 create-react-appcreate-vite)、VSCode 扩展管理器、个人网站、应用程序和机器人等等。

最大的 Node 项目(按 JavaScript/TypeScript 代码行数计算)的提交作品是 kibana,代码行数为 3,212,395 行。该提交作品还 包含了一个尝试的分步演练,例如修改 require 语句、启用的 Deno 标志集以及删除一些 Node 版本验证。祝贺 hverlin 赢得“最大的 Node 项目”奖。

感谢大家参与并帮助我们改进 Node 兼容性。如果您是 10 名随机选中的参与者之一,Deno 团队将通过 Twitter、Discord 或电子邮件与您联系,告知奖品信息。

就是这样!

如果您有任何问题,请在 TwitterDiscord 上告知我们。