有什么方法可以将Node项目转换为Deno吗?

时间:2020-05-13 08:53:44

标签: javascript node.js typescript converters deno

我想将Node.js项目转换为Deno。有任何指南吗?

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

有什么提示吗?

2 个答案:

答案 0 :(得分:7)

Deno和Node.js API不兼容,当然您将能够重用所有javascript /打字稿代码,但是您需要重构或添加polyfills。

为简化迁移,Deno提供了Node Compatibility librarystd/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'))

如果运行该示例:

npm i left-pad
deno run --allow-read node.js
// 00005

您可以看到left-pad已从node_modules/正确加载。因此,对于不依赖Node.js API的NPM软件包,您可以使用std/node轻松地要求它们。

这里是list of all supported builtins


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

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

对于在Node.js上可以完美运行的大型项目,IMO并不值得迁移它们。 Deno和Node.js可以生活在一起,不是彼此。如果您愿意,可以在Deno上构建新项目,而不是迁移旧项目。

答案 1 :(得分:5)

签出Denoify,这是一个可以满足您需要的构建工具。您不必编写该工具为您完成的端口,所有这些都在文档中进行了详细说明。

揭露:我是作者。

repo

相关问题