Deno 是一个新兴的 JavaScript 和 TypeScript 运行时环境,它与 Node.js 相比具有更高的安全性和更好的可读性。然而,由于其不同于 Node.js 的模块系统,Deno 的用户可能会发现它不支持 Node.js 中广泛使用的大量 NPM 模块,因此本文介绍如何在 Deno 中使用 NPM 模块。
安装第三方模块
Deno 要求模块必须是 ES 模块,因此如果要安装 NPM 模块,你需要找到一个已经转换为 ES 模块的版本。可以使用 Skypack 或 esm.sh 这样的工具,在 Deno 中使用 import
导入第三方模块。
例如,如果要在 Deno 中使用 lodash
模块,则可以使用以下命令:
import * as _ from 'https://cdn.skypack.dev/lodash';
或者:
import * as _ from 'https://esm.sh/lodash';
在这里,import
导入的是 Skypack 或 esm.sh 的服务,它们会将请求重定向到 NPM 上,但是将文件从 CommonJS 转换为 ES 模块。
使用本地依赖
如果你想在 Deno 中使用本地安装的 NPM 模块,你需要下载该模块并使用 Deno 提供的工具转换为 ES 模块。
首先,使用 NPM 或 Yarn 安装依赖:
npm install lodash
然后,可以使用 dprint-plugin-typescript 工具将模块转换为 ES 模块。该工具可以使用以下命令安装:
deno install --unstable --allow-read --allow-write https://deno.land/x/dprint/install.ts
接下来,在项目目录中创建一个名为 config.json
的文件,以指定如何格式化 TypeScript 文件:
{ "moduleSpecifierResolution": { "@root": "node_modules" } }
然后,在命令行中使用以下命令格式化 lodash
模块:
dprint typescript node_modules/lodash/**/*.{ts,tsx}
最后,你可以在 Deno 项目中使用类似下面的代码导入本地安装的 lodash
:
import * as _ from './node_modules/lodash/lodash.js';
需要注意的是,因为 lodash
是 CommonJS 模块,它会在导出对象时使用默认的 module.exports
,因此要将其指定为 ES 模块,必须手动更改导出语句。
总结
在 Deno 中使用 NPM 模块可能需要一些转换操作,但是可以使用 Skypack 或 esm.sh 导入模块,也可以下载模块并将其转换为 ES 模块,这还需要使用 dprint-plugin-typescript 工具格式化 TypeScript 文件。希望本文能帮助你更好地在 Deno 中使用 NPM 模块。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64c6406d10032fedd38c183f