Skip to content

🚦 Check and align required software versions in your project

License

Notifications You must be signed in to change notification settings

chimurai/requirements

Folders and files

NameName
Last commit message
Last commit date
May 11, 2024
Mar 23, 2024
Oct 9, 2021
Dec 4, 2019
Sep 8, 2024
Apr 15, 2024
Oct 23, 2022
Sep 10, 2019
Oct 23, 2022
Sep 29, 2019
Sep 10, 2019
Apr 14, 2024
Sep 11, 2019
Sep 11, 2019
Nov 3, 2024
Apr 4, 2017
Apr 15, 2024
Apr 15, 2024
Feb 22, 2025
Apr 20, 2024
Feb 22, 2025

Repository files navigation

requirements

npm coveralls dependency Status snyk code style: prettier

Validate your project's software requirements.

requirements-screenshot

install

$ npm install -D requirements
$ yarn add --dev requirements

setup

Scaffold a new requirements.config.mjs configuration file

$ npx requirements --init

config

Configure the requirements.config.mjs file in your project root.

export default {
  software: {
    node: '*',
    yarn: '~1.17.3',
    nginx: {
      semver: '>= 1.16.x',
      optional: true, // optional (won't fail)
      installMessage: '<install instruction>', // custom message when binary is not found
      updateMessage: '<update instruction>', // custom message when binary has wrong version
    },
    httpd: {
      semver: '^1.x',
      flag: '-v', // custom version flag
    },
  },
  // custom functions to verify requirements which are not related to software versions
  // see ./tests/custom-check-ssh.config.mjs for an example
  custom: {
    'Example title for custom requirements check', {
      fn: () => { throw new Error('throw Error when requirement not met.') },
      errorMessage: 'This error message is shown when the above function throws Error',
    }
  }
};

check requirements

Run requirements command in the project root. By default it will try to find the requirements.config.mjs file.

npx requirements

Or use a custom path:

npx requirements --config <filepath>

CLI options

npx requirements --help
Options:
  --help, -h     Show help                                             [boolean]
  --version, -v  Show version number                                   [boolean]
  --init, -i     Create a requirements.config.mjs file
  --config, -c   Path to the configuration file
                                            [default: "requirements.config.mjs"]
  --force, -f    Succeeds even if not all requirements are satisfied
                                                      [boolean] [default: false]
  --quiet, -q    Only output when errors are present                   [boolean]
  --debug        Print raw data                                        [boolean]

require('requirements')

const { checkSoftware, renderTable } = require('requirements');

(async () => {
  const result = await checkSoftware({ node: '*' });
  console.log(renderTable(result));
})();

checkSoftware() returns an Array with results

[
  {
    bin: 'node',
    semver: '*',
    installed: true,
    version: '12.8.1',
    satisfies: true,
  },
];

testing

# test functionality
yarn build
node bin/requirements.js --config tests/requirements.config.mjs

# unit tests
yarn test

license

The MIT License (MIT)

Copyright (c) 2017-2024 Steven Chim