National Pest Management


    0.10.4 • Public • Published


    Opinionated package.json validator

    NPM info

    Build status dependencies devdependencies semantic-release

    You can read the description of each package.json property here. Example package.json that passes all checks (because it is using this module!) is kensho/ng-describe/package.json.


    npm install grunt-nice-package --save-dev

    Once the plugin has been installed, it may be enabled inside your Gruntfile with this line of JavaScript:

      'nice-package': {
        all: {
          options: {
            // make sure package.json ends with \n\n, default false
            blankLine: true|false,
            version: function (value) {
              // strict version number validation
              return (/\d{1,2}\.\d{1,2}\.\d{1,2}/).test(value);

    Alternative: default options

    You can load the task with default options without specifying the configuration object

    grunt.registerTask('default', ['nice-package']);

    Note: you can use nicePackage as alias to nice-package task name

       nicePackage: {
         all: { ... }

    Install without Grunt

    If you don't want to use grunt, but still need this project, run it via grunty

    npm install -D grunt-nice-package grunty

    Then add the following to the scripts section

      "scripts": {
        "nice": "grunty grunt-nice-package nice-package"

    Validator functions

    Please return true if the check passes from custom validation functions.

    After the property validators pass, package.json is further checked using package-json-validator by Nick Sullivan. It will check the required properties, and provide suggestions for the recommended ones.

    Tight versions

    The fix step in this task removes all fuzzy symbols from declared versions (~, ^), leaving just the numbers.

    "dependencies": {         "dependencies": {
      "foo": "^0.1.0",  ==>     "foo": "0.1.0",
      "bar": "~1.0.0"           "bar": "1.0.0"
    }                         }


    You can define a validation function for any property of the package.json, by default the validation will check:

    • name
    • version
    • description
    • license or licenses
    • keywords (array of strings)

    For complete list see nice_package.js for details.

    Related projects

    You can easily run this grunt task from gulp, see Using grunt tasks from gulp

    Small print

    Author: Gleb Bahmutov © 2013

    License: MIT - do anything with the code, but don't blame me if it does not work.

    Spread the word: tweet, star on github, etc.

    Support: if you find any problems with this module, email / tweet / open issue on Github


    npm i grunt-nice-package

    DownloadsWeekly Downloads






    Last publish


    • bahmutov