跳到主要内容

管理依赖

概念

  • Deno 使用 URL 来进行依赖管理。
  • 一个常见的约定是将所有这些依赖的 URL 放入一个本地的 deps.ts 文件中。 功能然后从 deps.ts 导出供本地模块使用。
  • 持续遵循这一约定,只有开发时依赖可以保存在 dev_deps.ts 文件中。
  • 另请参阅 模块

概述

在 Deno 中,没有包管理器的概念,外部模块会 直接导入到本地模块中。这引发了如何管理 没有包管理器的远程依赖的问题。在具有许多 依赖项的大型项目中,如果它们都单独导入到各个模块中, 更新模块将变得繁琐和耗时。

在 Deno 中解决这个问题的标准做法是创建一个 deps.ts 文件。这个文件中引用了所有必需的远程依赖,以及 必需的方法和类都被重新导出。然后,依赖的本地模块 引用 deps.ts,而不是远程依赖。如果现在,例如 一个远程依赖在多个文件中使用,升级到新版本的 这个远程依赖就变得简单得多,因为可以在 deps.ts 中完成。

将所有依赖项集中在 deps.ts 中,管理这些依赖项变得更容易。 开发依赖项也可以在单独的 dev_deps.ts 文件中进行管理,允许 开发依赖和生产依赖之间进行清晰分离。

示例

/**
* deps.ts
*
* 此模块重新导出了来自依赖的远程 Ramda 模块的所需方法。
*/
export {
add,
multiply,
} from "https://x.nest.land/ramda@0.27.0/source/index.js";

在这个示例中,与 本地和远程导入示例 中的情况相同, 但在这种情况下,Ramda 模块不是直接引用,而是通过本地的 deps.ts 模块引用。

命令: deno run example.ts

/**
* example.ts
*/

import { add, multiply } from "./deps.ts";

function totalCost(outbound: number, inbound: number, tax: number): number {
return multiply(add(outbound, inbound), tax);
}

console.log(totalCost(19, 31, 1.2));
console.log(totalCost(45, 27, 1.15));

/**
* 输出
*
* 60
* 82.8
*/