depreman

0.3.9 • Public • Published

npm Deprecation Manager

A manager for npm deprecation warnings.

Turn:

$ npm clean-install
npm warn deprecated inflight@1.0.6: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
npm warn deprecated @humanwhocodes/config-array@0.12.3: Use @eslint/config-array instead
npm warn deprecated rimraf@3.0.2: Rimraf versions prior to v4 are no longer supported
npm warn deprecated @humanwhocodes/config-array@0.6.0: Use @eslint/config-array instead
npm warn deprecated glob@7.2.3: Glob versions prior to v9 are no longer supported
npm warn deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm warn deprecated glob@8.1.0: Glob versions prior to v9 are no longer supported
npm warn deprecated @humanwhocodes/object-schema@2.0.3: Use @eslint/object-schema instead
npm warn deprecated @humanwhocodes/object-schema@1.2.1: Use @eslint/object-schema instead
npm warn deprecated eslint@8.0.1: This version is no longer supported. Please see https://eslint.org/version-support for other options.

Into:

$ depreman
glob@8.1.0 ("Glob versions prior to v9 are no longer supported"):
        mocha@10.7.0 > glob@8.1.0
        publint@0.2.10 > npm-packlist@5.1.3 > glob@8.1.0

Usage

  1. Install:

    npm install depreman
  2. Create an .ndmrc file in the root of your project.

  3. Run:

    npx depreman
  4. Configure.

Configuration

CLI

The CLI has a couple of options:

  • --help/-h: show help text.
  • --errors-only: output only deprecation warnings that are not ignored.
  • --report-unused: report and fail if there is an ignore directive that is unused. This is recommended if you have a lockfile but discouraged if you do not.
  • --omit=<dev|optional|peer>: ignore deprecation warnings in development, optional, or peer dependencies. Can be repeated.

File

An .ndmrc file is just a JSON file with rules for deprecated dependencies to ignore. The object hierarchy should reflect the dependency hierarchy with keys representing <package>@<version> pairs (semver version ranges supported).

The * wildcard can be used to match 0-or-more dependencies in a hierarchy and the + wildcard can be used to match 1-or-more dependencies in a hierarchy.

Use the "#ignore" directive when a deprecation for a given dependency should be ignored and assign it a reason as a string (or a boolean if you prefer). Optionally, use the "#expire" directive to set a date (YYYY-MM-DD) on which the rule expires.

For example:

{
  "ignore@v0": {
    "#ignore": "ignore deprecation warnings for ignore@v0 but not its children"
  },

  "not-ignored@v1": {
    "package-a@v2": {
      "#ignore": "ignore deprecation warnings for not-ignored@v1 > package-a@v2"
    },
    "package-b@v3": {
      "#ignore": "and for package-b@v3 only until December 31, 2024",
      "#expire": "2024-12-31"
    }
  },

  "ignore-it@v4": {
    "*": {
      "#ignore": "ignore direct and transitive deprecation warnings with '*'"
    }
  },
  "also-not-ignored@v5": {
    "+": {
      "#ignore": "ignore transitive deprecation warnings only with '+'"
    }
  },

  "*": {
    "ignored@v6": {
      "#ignore": "ignore deprecation warnings anywhere in the tree"
    }
  },

  "no-reason@v7": {
    "#ignore": true
  }
}

License

This software is available under the AGPL-3.0-only license, see LICENSE for the full license text. Documentation is available under the GFDL-1.3-or-later license, see GNU Free Documentation License v1.3 for the full license text.

Readme

Keywords

Package Sidebar

Install

npm i depreman

Weekly Downloads

250

Version

0.3.9

License

AGPL-3.0-only

Unpacked Size

177 kB

Total Files

31

Last publish

Collaborators

  • ericcornelissen