ericcornelissen / depreman

Manage npm deprecations
https://www.npmjs.com/package/depreman
GNU Affero General Public License v3.0
0 stars 0 forks source link
cli deprecations npm

npm Deprecation Manager

A manager for npm deprecations.

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

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 deprecations for ignore@v0 but not its (grand)children"
  },

  "not-ignored@v1": {
    "package-a@v2": {
      "#ignore": "ignore deprecations 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 deprecations in ignore-it@v4 and dependencies with '*'"
    }
  },
  "also-not-ignored@v5": {
    "+": {
      "#ignore": "ignore deprecations *under* also-not-ignored@v5 with '+'"
    }
  },

  "*": {
    "ignored@v6": {
      "#ignore": "ignore deprecations in ignored@v6 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.