JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 378
  • Score
    100M100P100Q102839F
  • License MIT

Package Exports

    Readme

    requirements

    npm coveralls 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