我想将Node.js项目转换为Deno。有任何指南吗?
我当前的项目有很多NPM文件,并且已经在TypeScript中。
有什么提示吗?
答案 0 :(得分:7)
Deno和Node.js API不兼容,当然您将能够重用所有javascript /打字稿代码,但是您需要重构或添加polyfills。
为简化迁移,Deno提供了Node Compatibility library,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'))
如果运行该示例:
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)