grunt-nice-package

Opinionated package.json validator

grunt-nice-package

Opinionated package.json validator

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:

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

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

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

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

 grunt.initConfig({
   nicePackage: {
     all: { ... }
   }
  });

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.

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.

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

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