Codependence in Node

How to use Codependence as a Node.js utility.

Overview

Although Codependence is built primarily as a CLI utility, it can also be used as a Node.js module for custom policy checks and internal tooling.

import { checkFiles } from "codependence";

const checkPolicy = async () => {
  try {
    await checkFiles({
      codependencies: ["fs-extra", "lodash"],
    });
    console.log("Dependency policy passed");
  } catch (error) {
    console.error("Dependency policy failed", error);
  }
};

checkPolicy();

To pin selected packages while updating everything else, enable permissive mode:

import { codependence } from "codependence";

await codependence({
  codependencies: ["fs-extra", "lodash"],
  permissive: true,
  update: true,
});

API Reference

Basic Usage

The codependence function accepts an options object with the same parameters as the CLI:

interface CodependenceOptions {
  codependencies?: Array<string | Record<string, string>>;
  files?: string[];
  update?: boolean;
  rootDir?: string;
  ignore?: string[];
  debug?: boolean;
  silent?: boolean;
  verbose?: boolean;
  quiet?: boolean;
  config?: string;
  searchPath?: string;
  yarnConfig?: boolean;
  permissive?: boolean;
}

Examples

Check Specific Dependencies

import { checkFiles } from "codependence";

await checkFiles({
  codependencies: [{ react: "^18.0.0" }, { typescript: "^5.0.0" }],
  update: false,
});

Update Dependencies in Monorepo

import { codependence } from "codependence";

await codependence({
  files: ["packages/*/package.json"],
  codependencies: ["eslint", "prettier"],
  permissive: true,
  update: true,
  rootDir: process.cwd(),
});

Using with Configuration File

import { codependence } from "codependence";

await codependence({
  config: "./codependence.config.json",
});

Return Values

The function resolves when the policy passes or updates complete. When format, dryRun, or update output is enabled, it can return version-diff data for reporting.

Error Handling

Wrap calls in try-catch blocks to handle errors:

import { codependence } from "codependence";

try {
  await codependence({
    codependencies: ["lodash"],
  });
} catch (error) {
  console.error("Codependence check failed:", error);
}