管理依赖关系

概念

概述

在 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));

/**
 * Output
 *
 * 60
 * 82.8
 */