有没有办法将 Node 项目转换为 Deno?

jot*_*ann 9 javascript converters node.js typescript deno

我想将 Node.js 项目转换为 Deno。有没有可用的指南?

我当前的项目有很多 NPM 文件,并且已经在 TypeScript 中。

有小费吗?

Mar*_*nde 8

Deno 和 Node.js API 不兼容,当然您可以重用所有 javascript/typescript 代码,但您需要重构或添加 polyfill。

为了便于移植杰诺提供了一个节点兼容库std/node,仍然需要大量的工作。

幸运的require是已经支持的 polyfill 之一

import { createRequire } from "https://deno.land/std/node/module.ts";

const require = createRequire(import.meta.url);
// Loads native module polyfill.
const path = require("path");
// Visits node_modules.
const leftPad = require("left-pad");

console.log(leftPad('5', 5, '0'))
Run Code Online (Sandbox Code Playgroud)

如果您运行该示例:

npm i left-pad
deno run --allow-read node.js
// 00005
Run Code Online (Sandbox Code Playgroud)

如您所见left-pad,从node_modules/. 因此,对于不依赖 Node.js API 的 NPM 包,您可以使用std/node.

是所有支持的内置函数列表


现在,对于严重依赖 Node.js API 的包,你能做的最好的事情就是使用 Deno API 重写它们。

随着项目的成熟,将有更简单的方法将 Node.js 项目转换为 Deno。

IMO 对于在 Node.js 上完美运行的大型项目来说,迁移它们是不值得的。Deno 和 Node.js 可以共存,它不是一个或另一个。如果您愿意而不是迁移旧项目,请在 Deno 上构建新项目。


Jos*_*one 5

看看Denoify,它是一个可以做你想做的构建工具。您不必编写工具为您完成的端口,文档中都有详细说明。

披露:我是作者。

回购