Repository: tclindner/npm-package-json-lint
Pull request #59 (2017-08-30 03:04:53)

Refactor rule loader for rule types


Patch:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2b7bea1..fa97eb8 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,6 +12,10 @@ This project adheres to [Semantic Versioning](http://semver.org/).
 ### Removed
 
 
+## [2.9.0] - 2017-08-29
+### Changed
+- Update all rules to export the type of rule they are. Current valid values are "standard" and "array". The rules loader has been updated to references the ruleType export rather than trying to maintain a separate list of array style rules. This change closes [issue #56](https://github.com/tclindner/npm-package-json-lint/issues/56) and should prevent the issue discussed in [issue #53](https://github.com/tclindner/npm-package-json-lint/issues/53) from occurring again.
+
 ## [2.8.2] - 2017-08-23
 ### Fixed
 - Rule loader so it recognized [prefer-property-order](https://github.com/tclindner/npm-package-json-lint/wiki/prefer-property-order) as an array type rule.
diff --git a/package.json b/package.json
index 8aa1502..fd09a8c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "npm-package-json-lint",
-  "version": "2.8.2",
+  "version": "2.9.0",
   "description": "CLI app for linting package.json files.",
   "keywords": [
     "lint",
@@ -31,7 +31,7 @@
     "eslint": "eslint . --format=node_modules/eslint-formatter-pretty",
     "lint": "npm run eslint",
     "test": "mocha tests/unit --recursive",
-    "coverage": "nyc --extension .js --check-coverage --lines 99 --branches 97 --functions 96 npm test"
+    "coverage": "nyc --extension .js --check-coverage --lines 99 --branches 98 --functions 96 npm test"
   },
   "dependencies": {
     "chalk": "^2.1.0",
diff --git a/src/Config.js b/src/Config.js
index b6c9bb7..d695957 100755
--- a/src/Config.js
+++ b/src/Config.js
@@ -3,7 +3,6 @@
 /* eslint class-methods-use-this: 'off' */
 
 const fs = require('fs');
-const inArray = require('in-array');
 const Parser = require('./Parser');
 const path = require('path');
 const userHome = require('user-home');
@@ -40,8 +39,6 @@ class Config {
   get() {
     const userConfig = this._getUserConfig();
 
-    this._validateConfig(userConfig);
-
     let extendsConfig = {};
 
     if (userConfig.hasOwnProperty('extends')) {
@@ -125,8 +122,6 @@ class Config {
 
     const configObj = this._getExtendsConfigModule(adjustedModuleName);
 
-    this._validateConfig(configObj);
-
     return configObj.rules;
   }
 
@@ -192,50 +187,51 @@ class Config {
   }
 
   /**
-   * Validates config object
-   * @param  {Object} rcFileObj   Object version of .npmpackagejsonlintrc file
-   * @return {boolean}            True if validate config is successful
+   * Validates array rule config
+   * @param  {String}    ruleName    Name of the rule
+   * @param  {Array}     ruleConfig  Array rule
+   * @return {Boolean}               True if config is valid, false if not
+   * @static
    */
-  _validateConfig(rcFileObj) {
-    if (rcFileObj.hasOwnProperty('rules')) {
-      this._validateRulesConfig(rcFileObj.rules);
+  static isArrayRuleConfigValid(ruleName, ruleConfig) {
+    if (typeof ruleConfig === 'string' && ruleConfig === 'off') {
+      return true;
+    } else if (typeof ruleConfig === 'string' && ruleConfig !== 'off') {
+      throw new Error(`${ruleName} - is an array type rule. It must be set to "off" if an array is not supplied.`);
+    } else if (typeof ruleConfig[0] !== 'string' || this._isSeverityInvalid(ruleConfig[0])) {
+      throw new Error(`${ruleName} - first key must be set to "error", "warning", or "off". Currently set to "${ruleConfig[0]}".`);
+    }
+
+    if (!Array.isArray(ruleConfig[1])) {
+      throw new Error(`${ruleName} - second key must be set an array. Currently set to "${ruleConfig[1]}".`);
     }
 
     return true;
   }
 
   /**
-   * Validates rules object
-   * @param  {Object}     rulesObj   Object version of .npmpackagejsonlintrc file
-   * @return {boolean}               True if validate config is successful
+   * Validates standard rule config
+   * @param  {String}     ruleName     Name of the rule
+   * @param  {Object}     ruleConfig   Value for standard rule config
+   * @return {Boolean}                 True if config is valid, false if not
+   * @static
    */
-  _validateRulesConfig(rulesObj) {
-    for (const rule in rulesObj) {
-      const ruleConfig = rulesObj[rule];
-
-      if (Array.isArray(ruleConfig) && inArray(this.arrayRules, rule)) {
-        if (typeof ruleConfig[0] !== 'string' || this._isRuleValid(ruleConfig[0])) {
-          throw new Error(`${rule} - first key must be set to "error", "warning", or "off". Currently set to ${ruleConfig[0]}`);
-        }
-
-        if (!Array.isArray(ruleConfig[1])) {
-          throw new Error(`${rule} - second key must be set an array. Currently set to ${ruleConfig[1]}`);
-        }
-      } else if (typeof ruleConfig !== 'string' || this._isRuleValid(ruleConfig)) {
-        throw new Error(`${rule} - must be set to "error", "warning", or "off". Currently set to ${ruleConfig}`);
-      }
+  static isStandardRuleConfigValid(ruleName, ruleConfig) {
+    if (this._isSeverityInvalid(ruleConfig)) {
+      throw new Error(`${ruleName} - must be set to "error", "warning", or "off". Currently set to "${ruleConfig}".`);
     }
 
     return true;
   }
 
   /**
-   * Validates the first key of an array type rule
-   * @param  {String}  key Error type of the rule
-   * @return {Boolean}     True if the rule is valid. False if the rule is invalid.
+   * Validates if the severity config is set correctly
+   * @param  {String}  severity Severity the rule is set to
+   * @return {Boolean}          True if the severity is valid. False if the severity is invalid.
+   * @static
    */
-  _isRuleValid(key) {
-    return typeof key === 'string' && key !== 'error' && key !== 'warning' && key !== 'off';
+  static _isSeverityInvalid(severity) {
+    return typeof severity !== 'string' || (typeof severity === 'string' && severity !== 'error' && severity !== 'warning' && severity !== 'off');
   }
 
 }
diff --git a/src/NpmPackageJsonLint.js b/src/NpmPackageJsonLint.js
index 635ef38..580178d 100755
--- a/src/NpmPackageJsonLint.js
+++ b/src/NpmPackageJsonLint.js
@@ -1,9 +1,8 @@
 'use strict';
 
-/* eslint class-methods-use-this: 'off' */
+/* eslint class-methods-use-this: 'off', max-statements: 'off' */
 
 const Config = require('./Config');
-const inArray = require('in-array');
 const Rules = require('./Rules');
 
 class NpmPackageJsonLint {
@@ -17,12 +16,6 @@ class NpmPackageJsonLint {
   constructor(packageJsonData, config, options) {
     this.packageJsonData = packageJsonData;
     this.ignoreWarnings = options.ignoreWarnings;
-    this.arrayRuleTypes = [
-      'valid-values',
-      'no-restricted-dependencies',
-      'no-restricted-pre-release-dependencies',
-      'property-order'
-    ];
     this.errors = [];
     this.warnings = [];
 
@@ -41,7 +34,8 @@ class NpmPackageJsonLint {
     for (const rule in configObj) {
       const ruleModule = this.rules.get(rule);
 
-      if (inArray(this.arrayRuleTypes, ruleModule.ruleType)) {
+      if (ruleModule.ruleType === 'array') {
+        Config.isArrayRuleConfigValid(rule, configObj[rule]);
         const errorWarningOffSetting = typeof configObj[rule] === 'string' && configObj[rule] === 'off' ? configObj[rule] : configObj[rule][0];
         const ruleConfigArray = configObj[rule][1];
 
@@ -50,6 +44,7 @@ class NpmPackageJsonLint {
         }
 
       } else {
+        Config.isStandardRuleConfigValid(rule, configObj[rule]);
         const errorWarningOffSetting = configObj[rule];
 
         if (errorWarningOffSetting !== 'off') {
diff --git a/src/rules/bin-type.js b/src/rules/bin-type.js
index 89b66e1..d00e49c 100755
--- a/src/rules/bin-type.js
+++ b/src/rules/bin-type.js
@@ -6,7 +6,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'bin-type';
 const nodeName = 'bin';
 const message = 'Type should be either a string or an Object';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isString(packageJsonData, nodeName) && !isObject(packageJsonData, nodeName)) {
diff --git a/src/rules/bundledDependencies-type.js b/src/rules/bundledDependencies-type.js
index 15ac46b..3762471 100644
--- a/src/rules/bundledDependencies-type.js
+++ b/src/rules/bundledDependencies-type.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'bundledDependencies-type';
 const nodeName = 'bundledDependencies';
 const message = 'Type should be an Object';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isObject(packageJsonData, nodeName)) {
diff --git a/src/rules/config-type.js b/src/rules/config-type.js
index 16b078c..3b74c7b 100755
--- a/src/rules/config-type.js
+++ b/src/rules/config-type.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'config-type';
 const nodeName = 'config';
 const message = 'Type should be an Object';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isObject(packageJsonData, nodeName)) {
diff --git a/src/rules/cpu-type.js b/src/rules/cpu-type.js
index 31ec93a..7d7a858 100644
--- a/src/rules/cpu-type.js
+++ b/src/rules/cpu-type.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'os-type';
 const nodeName = 'os';
 const message = 'Type should be an array';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isArray(packageJsonData, nodeName)) {
diff --git a/src/rules/dependencies-type.js b/src/rules/dependencies-type.js
index fca70d9..412c283 100755
--- a/src/rules/dependencies-type.js
+++ b/src/rules/dependencies-type.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'dependencies-type';
 const nodeName = 'dependencies';
 const message = 'Type should be an Object';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isObject(packageJsonData, nodeName)) {
diff --git a/src/rules/description-type.js b/src/rules/description-type.js
index 258b84d..3c33a31 100755
--- a/src/rules/description-type.js
+++ b/src/rules/description-type.js
@@ -5,7 +5,7 @@ const isString = require('./../validators/type').isString;
 const lintId = 'description-type';
 const nodeName = 'description';
 const message = 'Type should be a string';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isString(packageJsonData, nodeName)) {
diff --git a/src/rules/devDependencies-type.js b/src/rules/devDependencies-type.js
index b1880f9..4c8f355 100755
--- a/src/rules/devDependencies-type.js
+++ b/src/rules/devDependencies-type.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'devDependencies-type';
 const nodeName = 'devDependencies';
 const message = 'Type should be an Object';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isObject(packageJsonData, nodeName)) {
diff --git a/src/rules/directories-type.js b/src/rules/directories-type.js
index 91c24f3..e0f22ae 100755
--- a/src/rules/directories-type.js
+++ b/src/rules/directories-type.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'directories-type';
 const nodeName = 'directories';
 const message = 'Type should be an Object';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isObject(packageJsonData, nodeName)) {
diff --git a/src/rules/engines-type.js b/src/rules/engines-type.js
index a99019f..ef51cca 100755
--- a/src/rules/engines-type.js
+++ b/src/rules/engines-type.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'engines-type';
 const nodeName = 'engines';
 const message = 'Type should be an Object';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isObject(packageJsonData, nodeName)) {
diff --git a/src/rules/files-type.js b/src/rules/files-type.js
index b410a28..a9bb967 100755
--- a/src/rules/files-type.js
+++ b/src/rules/files-type.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'files-type';
 const nodeName = 'files';
 const message = 'Type should be an Array';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isArray(packageJsonData, nodeName)) {
diff --git a/src/rules/homepage-type.js b/src/rules/homepage-type.js
index 2e34817..afcf440 100755
--- a/src/rules/homepage-type.js
+++ b/src/rules/homepage-type.js
@@ -5,7 +5,7 @@ const isString = require('./../validators/type').isString;
 const lintId = 'homepage-type';
 const nodeName = 'homepage';
 const message = 'Type should be a string';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isString(packageJsonData, nodeName)) {
diff --git a/src/rules/keywords-type.js b/src/rules/keywords-type.js
index d85a79b..9b23f39 100755
--- a/src/rules/keywords-type.js
+++ b/src/rules/keywords-type.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'keywords-type';
 const nodeName = 'keywords';
 const message = 'Type should be an Array';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isArray(packageJsonData, nodeName)) {
diff --git a/src/rules/license-type.js b/src/rules/license-type.js
index 5f24e16..95255a4 100755
--- a/src/rules/license-type.js
+++ b/src/rules/license-type.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'license-type';
 const nodeName = 'license';
 const message = 'Type should be a string';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isString(packageJsonData, nodeName)) {
diff --git a/src/rules/main-type.js b/src/rules/main-type.js
index 896322b..69f10ad 100755
--- a/src/rules/main-type.js
+++ b/src/rules/main-type.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'main-type';
 const nodeName = 'main';
 const message = 'Type should be a string';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isString(packageJsonData, nodeName)) {
diff --git a/src/rules/man-type.js b/src/rules/man-type.js
index 1117b89..69b234a 100755
--- a/src/rules/man-type.js
+++ b/src/rules/man-type.js
@@ -6,7 +6,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'man-type';
 const nodeName = 'man';
 const message = 'Type should be either a string or an array';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isArray(packageJsonData, nodeName) && !isString(packageJsonData, nodeName)) {
diff --git a/src/rules/name-format.js b/src/rules/name-format.js
index 4a9ad76..60456c2 100755
--- a/src/rules/name-format.js
+++ b/src/rules/name-format.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'name-format';
 const nodeName = 'name';
 const message = 'Format should be all lowercase';
-const ruleType = 'format';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isLowercase(packageJsonData, nodeName)) {
diff --git a/src/rules/name-type.js b/src/rules/name-type.js
index dea916a..1bd27d0 100755
--- a/src/rules/name-type.js
+++ b/src/rules/name-type.js
@@ -5,7 +5,7 @@ const isString = require('./../validators/type').isString;
 const lintId = 'name-type';
 const nodeName = 'name';
 const message = 'Type should be a string';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isString(packageJsonData, nodeName)) {
diff --git a/src/rules/no-restricted-dependencies.js b/src/rules/no-restricted-dependencies.js
index bcefffe..d4d7670 100755
--- a/src/rules/no-restricted-dependencies.js
+++ b/src/rules/no-restricted-dependencies.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'no-restricted-dependencies';
 const nodeName = 'dependencies';
 const message = 'You are using a restricted dependency. Please remove it.';
-const ruleType = 'no-restricted-dependencies';
+const ruleType = 'array';
 
 const lint = function(packageJsonData, lintType, invalidDependencies) {
   if (hasDependency(packageJsonData, nodeName, invalidDependencies)) {
diff --git a/src/rules/no-restricted-devDependencies.js b/src/rules/no-restricted-devDependencies.js
index 708ebf1..ba3371c 100755
--- a/src/rules/no-restricted-devDependencies.js
+++ b/src/rules/no-restricted-devDependencies.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'no-restricted-devDependencies';
 const nodeName = 'devDependencies';
 const message = 'You are using a restricted dependency. Please remove it.';
-const ruleType = 'no-restricted-dependencies';
+const ruleType = 'array';
 
 const lint = function(packageJsonData, lintType, invalidDependencies) {
   if (hasDependency(packageJsonData, nodeName, invalidDependencies)) {
diff --git a/src/rules/no-restricted-pre-release-dependencies.js b/src/rules/no-restricted-pre-release-dependencies.js
index b27f2c7..9074369 100755
--- a/src/rules/no-restricted-pre-release-dependencies.js
+++ b/src/rules/no-restricted-pre-release-dependencies.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'no-restricted-pre-release-dependencies';
 const nodeName = 'dependencies';
 const message = 'You are using a restricted pre-release dependency. Please remove it.';
-const ruleType = 'no-restricted-pre-release-dependencies';
+const ruleType = 'array';
 
 const lint = function(packageJsonData, lintType, invalidPreRelDeps) {
   if (hasDepPrereleaseVers(packageJsonData, nodeName, invalidPreRelDeps)) {
diff --git a/src/rules/no-restricted-pre-release-devDependencies.js b/src/rules/no-restricted-pre-release-devDependencies.js
index 20abd3d..5ac3735 100755
--- a/src/rules/no-restricted-pre-release-devDependencies.js
+++ b/src/rules/no-restricted-pre-release-devDependencies.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'no-restricted-pre-release-devDependencies';
 const nodeName = 'devDependencies';
 const message = 'You are using a restricted pre-release dependency. Please remove it.';
-const ruleType = 'no-restricted-pre-release-dependencies';
+const ruleType = 'array';
 
 const lint = function(packageJsonData, lintType, invalidPreRelDeps) {
   if (hasDepPrereleaseVers(packageJsonData, nodeName, invalidPreRelDeps)) {
diff --git a/src/rules/optionalDependencies-type.js b/src/rules/optionalDependencies-type.js
index f43240d..83e55ee 100644
--- a/src/rules/optionalDependencies-type.js
+++ b/src/rules/optionalDependencies-type.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'optionalDependencies-type';
 const nodeName = 'optionalDependencies';
 const message = 'Type should be an Object';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isObject(packageJsonData, nodeName)) {
diff --git a/src/rules/os-type.js b/src/rules/os-type.js
index 31ec93a..7d7a858 100644
--- a/src/rules/os-type.js
+++ b/src/rules/os-type.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'os-type';
 const nodeName = 'os';
 const message = 'Type should be an array';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isArray(packageJsonData, nodeName)) {
diff --git a/src/rules/peerDependencies-type.js b/src/rules/peerDependencies-type.js
index a68e7fa..ff99de1 100644
--- a/src/rules/peerDependencies-type.js
+++ b/src/rules/peerDependencies-type.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'peerDependencies-type';
 const nodeName = 'peerDependencies';
 const message = 'Type should be an Object';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isObject(packageJsonData, nodeName)) {
diff --git a/src/rules/prefer-absolute-version-dependencies.js b/src/rules/prefer-absolute-version-dependencies.js
index 959b67f..f462c52 100644
--- a/src/rules/prefer-absolute-version-dependencies.js
+++ b/src/rules/prefer-absolute-version-dependencies.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'prefer-absolute-version-dependencies';
 const nodeName = 'dependencies';
 const message = 'You are using an invalid version range. Please use absolute versions.';
-const ruleType = 'dependencies-version-range';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
 
diff --git a/src/rules/prefer-absolute-version-devDependencies.js b/src/rules/prefer-absolute-version-devDependencies.js
index 0033328..7c292aa 100644
--- a/src/rules/prefer-absolute-version-devDependencies.js
+++ b/src/rules/prefer-absolute-version-devDependencies.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'prefer-absolute-version-devDependencies';
 const nodeName = 'devDependencies';
 const message = 'You are using an invalid version range. Please use absolute versions.';
-const ruleType = 'devDependencies-version-range';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
 
diff --git a/src/rules/prefer-alphabetical-bundledDependencies.js b/src/rules/prefer-alphabetical-bundledDependencies.js
index 97e7070..0ae1409 100644
--- a/src/rules/prefer-alphabetical-bundledDependencies.js
+++ b/src/rules/prefer-alphabetical-bundledDependencies.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'prefer-alphabetical-bundledDependencies';
 const nodeName = 'bundledDependencies';
 const message = 'Your bundledDependencies are not in alphabetical order.';
-const ruleType = 'bundledDependencies-alphabetical-order';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   const result = isInAlphabeticalOrder(packageJsonData, nodeName);
diff --git a/src/rules/prefer-alphabetical-dependencies.js b/src/rules/prefer-alphabetical-dependencies.js
index bca6374..a4a27eb 100644
--- a/src/rules/prefer-alphabetical-dependencies.js
+++ b/src/rules/prefer-alphabetical-dependencies.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'prefer-alphabetical-dependencies';
 const nodeName = 'dependencies';
 const message = 'Your dependencies are not in alphabetical order.';
-const ruleType = 'dependencies-alphabetical-order';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   const result = isInAlphabeticalOrder(packageJsonData, nodeName);
diff --git a/src/rules/prefer-alphabetical-devDependencies.js b/src/rules/prefer-alphabetical-devDependencies.js
index 5d27e38..48f3e86 100644
--- a/src/rules/prefer-alphabetical-devDependencies.js
+++ b/src/rules/prefer-alphabetical-devDependencies.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'prefer-alphabetical-devDependencies';
 const nodeName = 'devDependencies';
 const message = 'Your devDependencies are not in alphabetical order.';
-const ruleType = 'devDependencies-alphabetical-order';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   const result = isInAlphabeticalOrder(packageJsonData, nodeName);
diff --git a/src/rules/prefer-alphabetical-optionalDependencies.js b/src/rules/prefer-alphabetical-optionalDependencies.js
index 982d4c6..b5f787b 100644
--- a/src/rules/prefer-alphabetical-optionalDependencies.js
+++ b/src/rules/prefer-alphabetical-optionalDependencies.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'prefer-alphabetical-optionalDependencies';
 const nodeName = 'optionalDependencies';
 const message = 'Your optionalDependencies are not in alphabetical order.';
-const ruleType = 'optionalDependencies-alphabetical-order';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   const result = isInAlphabeticalOrder(packageJsonData, nodeName);
diff --git a/src/rules/prefer-alphabetical-peerDependencies.js b/src/rules/prefer-alphabetical-peerDependencies.js
index f31988b..ff3cc1d 100644
--- a/src/rules/prefer-alphabetical-peerDependencies.js
+++ b/src/rules/prefer-alphabetical-peerDependencies.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'prefer-alphabetical-peerDependencies';
 const nodeName = 'peerDependencies';
 const message = 'Your peerDependencies are not in alphabetical order.';
-const ruleType = 'peerDependencies-alphabetical-order';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   const result = isInAlphabeticalOrder(packageJsonData, nodeName);
diff --git a/src/rules/prefer-caret-version-dependencies.js b/src/rules/prefer-caret-version-dependencies.js
index 7249a34..7ca3f4e 100644
--- a/src/rules/prefer-caret-version-dependencies.js
+++ b/src/rules/prefer-caret-version-dependencies.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'prefer-caret-version-dependencies';
 const nodeName = 'dependencies';
 const message = 'You are using an invalid version range. Please use ^.';
-const ruleType = 'dependencies-version-range';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   const rangeSpecifier = '^';
diff --git a/src/rules/prefer-caret-version-devDependencies.js b/src/rules/prefer-caret-version-devDependencies.js
index c4489c7..bc5383e 100644
--- a/src/rules/prefer-caret-version-devDependencies.js
+++ b/src/rules/prefer-caret-version-devDependencies.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'prefer-caret-version-devDependencies';
 const nodeName = 'devDependencies';
 const message = 'You are using an invalid version range. Please use ^.';
-const ruleType = 'devDependencies-version-range';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   const rangeSpecifier = '^';
diff --git a/src/rules/prefer-no-engineStrict.js b/src/rules/prefer-no-engineStrict.js
index 8b45f22..11446a5 100644
--- a/src/rules/prefer-no-engineStrict.js
+++ b/src/rules/prefer-no-engineStrict.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'prefer-no-engineStrict';
 const nodeName = 'engineStrict';
 const message = 'engineStrict was deprecated with npm v3.0.0. Please remove it from your package.json file';
-const ruleType = 'deprecated-nodes';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/prefer-no-version-zero-dependencies.js b/src/rules/prefer-no-version-zero-dependencies.js
index 7d1af5e..d5c3342 100644
--- a/src/rules/prefer-no-version-zero-dependencies.js
+++ b/src/rules/prefer-no-version-zero-dependencies.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'prefer-no-version-zero-dependencies';
 const nodeName = 'dependencies';
 const message = 'You have invalid version 0 dependencies. Please use modules with a major version >= 1.';
-const ruleType = 'no-version-zero';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (hasDepVersZero(packageJsonData, nodeName)) {
diff --git a/src/rules/prefer-no-version-zero-devDependencies.js b/src/rules/prefer-no-version-zero-devDependencies.js
index fa64013..d064941 100644
--- a/src/rules/prefer-no-version-zero-devDependencies.js
+++ b/src/rules/prefer-no-version-zero-devDependencies.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'prefer-no-version-zero-devDependencies';
 const nodeName = 'devDependencies';
 const message = 'You have invalid version 0 dependencies. Please use modules with a major version >= 1.';
-const ruleType = 'no-version-zero';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (hasDepVersZero(packageJsonData, nodeName)) {
diff --git a/src/rules/prefer-property-order.js b/src/rules/prefer-property-order.js
index 18cec21..28fb68f 100644
--- a/src/rules/prefer-property-order.js
+++ b/src/rules/prefer-property-order.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'prefer-property-order';
 const nodeName = '';
 const message = 'Your package.json properties are not in the desired order.';
-const ruleType = 'property-order';
+const ruleType = 'array';
 
 const lint = function(packageJsonData, lintType, preferredOrder) {
   const result = isInPreferredOrder(packageJsonData, preferredOrder);
diff --git a/src/rules/prefer-tilde-version-dependencies.js b/src/rules/prefer-tilde-version-dependencies.js
index 7521103..6162cf5 100644
--- a/src/rules/prefer-tilde-version-dependencies.js
+++ b/src/rules/prefer-tilde-version-dependencies.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'prefer-tilde-version-dependencies';
 const nodeName = 'dependencies';
 const message = 'You are using an invalid version range. Please use ~.';
-const ruleType = 'dependencies-version-range';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   const rangeSpecifier = '~';
diff --git a/src/rules/prefer-tilde-version-devDependencies.js b/src/rules/prefer-tilde-version-devDependencies.js
index 02967b7..1f8b10f 100644
--- a/src/rules/prefer-tilde-version-devDependencies.js
+++ b/src/rules/prefer-tilde-version-devDependencies.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'prefer-tilde-version-devDependencies';
 const nodeName = 'devDependencies';
 const message = 'You are using an invalid version range. Please use ~.';
-const ruleType = 'devDependencies-version-range';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   const rangeSpecifier = '~';
diff --git a/src/rules/preferGlobal-type.js b/src/rules/preferGlobal-type.js
index 1b8b633..4c4da0c 100755
--- a/src/rules/preferGlobal-type.js
+++ b/src/rules/preferGlobal-type.js
@@ -5,7 +5,7 @@ const isBoolean = require('./../validators/type').isBoolean;
 const lintId = 'preferGlobal-type';
 const nodeName = 'preferGlobal';
 const message = 'Type should be a boolean';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isBoolean(packageJsonData, nodeName)) {
diff --git a/src/rules/private-type.js b/src/rules/private-type.js
index 8aeea4a..2990047 100755
--- a/src/rules/private-type.js
+++ b/src/rules/private-type.js
@@ -5,7 +5,7 @@ const isBoolean = require('./../validators/type').isBoolean;
 const lintId = 'private-type';
 const nodeName = 'private';
 const message = 'Type should be a boolean';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isBoolean(packageJsonData, nodeName)) {
diff --git a/src/rules/repository-type.js b/src/rules/repository-type.js
index 5cf13da..f76c5d9 100755
--- a/src/rules/repository-type.js
+++ b/src/rules/repository-type.js
@@ -6,7 +6,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'repository-type';
 const nodeName = 'repository';
 const message = 'Type should be either a string or an Object';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isString(packageJsonData, nodeName) && !isObject(packageJsonData, nodeName)) {
diff --git a/src/rules/require-author.js b/src/rules/require-author.js
index 9b42062..eaeb3a3 100755
--- a/src/rules/require-author.js
+++ b/src/rules/require-author.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-author';
 const nodeName = 'author';
 const message = 'author is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-bin.js b/src/rules/require-bin.js
index 11a1abb..9fd7ad2 100644
--- a/src/rules/require-bin.js
+++ b/src/rules/require-bin.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-bin';
 const nodeName = 'bin';
 const message = 'bin is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-bugs.js b/src/rules/require-bugs.js
index 11520d5..7aac890 100755
--- a/src/rules/require-bugs.js
+++ b/src/rules/require-bugs.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-bugs';
 const nodeName = 'bugs';
 const message = 'bugs is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-bundledDependencies.js b/src/rules/require-bundledDependencies.js
index 04fa330..6555512 100644
--- a/src/rules/require-bundledDependencies.js
+++ b/src/rules/require-bundledDependencies.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-bundledDependencies';
 const nodeName = 'bundledDependencies';
 const message = 'bundledDependencies is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-config.js b/src/rules/require-config.js
index b7e1f4d..0fa835c 100644
--- a/src/rules/require-config.js
+++ b/src/rules/require-config.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-config';
 const nodeName = 'config';
 const message = 'config is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-contributors.js b/src/rules/require-contributors.js
index dd3ce5f..917388f 100644
--- a/src/rules/require-contributors.js
+++ b/src/rules/require-contributors.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-contributors';
 const nodeName = 'contributors';
 const message = 'contributors is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-cpu.js b/src/rules/require-cpu.js
index e6120fb..93c013a 100644
--- a/src/rules/require-cpu.js
+++ b/src/rules/require-cpu.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-cpu';
 const nodeName = 'cpu';
 const message = 'cpu is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-dependencies.js b/src/rules/require-dependencies.js
index 9b3aab7..3ceabe1 100644
--- a/src/rules/require-dependencies.js
+++ b/src/rules/require-dependencies.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-dependencies';
 const nodeName = 'dependencies';
 const message = 'dependencies is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-description.js b/src/rules/require-description.js
index d307aad..af9f247 100755
--- a/src/rules/require-description.js
+++ b/src/rules/require-description.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-description';
 const nodeName = 'description';
 const message = 'description is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-devDependencies.js b/src/rules/require-devDependencies.js
index 7ebe7cd..95f1be6 100644
--- a/src/rules/require-devDependencies.js
+++ b/src/rules/require-devDependencies.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-devDependencies';
 const nodeName = 'devDependencies';
 const message = 'devDependencies is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-directories.js b/src/rules/require-directories.js
index afe122a..c7d94f7 100644
--- a/src/rules/require-directories.js
+++ b/src/rules/require-directories.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-directories';
 const nodeName = 'directories';
 const message = 'directories is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-engines.js b/src/rules/require-engines.js
index aa678eb..13cace5 100755
--- a/src/rules/require-engines.js
+++ b/src/rules/require-engines.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-engines';
 const nodeName = 'engines';
 const message = 'engines is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-files.js b/src/rules/require-files.js
index 068cf68..eef01a1 100644
--- a/src/rules/require-files.js
+++ b/src/rules/require-files.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-files';
 const nodeName = 'files';
 const message = 'files is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-homepage.js b/src/rules/require-homepage.js
index a990a69..f67335a 100755
--- a/src/rules/require-homepage.js
+++ b/src/rules/require-homepage.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-homepage';
 const nodeName = 'homepage';
 const message = 'homepage is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-keywords.js b/src/rules/require-keywords.js
index 61c0468..bcb1fe1 100755
--- a/src/rules/require-keywords.js
+++ b/src/rules/require-keywords.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-keywords';
 const nodeName = 'keywords';
 const message = 'keywords is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-license.js b/src/rules/require-license.js
index 21d2edd..e288e69 100755
--- a/src/rules/require-license.js
+++ b/src/rules/require-license.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-license';
 const nodeName = 'license';
 const message = 'license is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-main.js b/src/rules/require-main.js
index c69fd5d..10b0c89 100644
--- a/src/rules/require-main.js
+++ b/src/rules/require-main.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-main';
 const nodeName = 'main';
 const message = 'main is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-man.js b/src/rules/require-man.js
index ae13a55..2d7c8ae 100644
--- a/src/rules/require-man.js
+++ b/src/rules/require-man.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-man';
 const nodeName = 'man';
 const message = 'man is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-name.js b/src/rules/require-name.js
index 80eec5f..f852539 100755
--- a/src/rules/require-name.js
+++ b/src/rules/require-name.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-name';
 const nodeName = 'name';
 const message = 'name is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-optionalDependencies.js b/src/rules/require-optionalDependencies.js
index 076c7b9..6fc86a2 100644
--- a/src/rules/require-optionalDependencies.js
+++ b/src/rules/require-optionalDependencies.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-optionalDependencies';
 const nodeName = 'optionalDependencies';
 const message = 'optionalDependencies is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-os.js b/src/rules/require-os.js
index d0e328f..f9c01f6 100644
--- a/src/rules/require-os.js
+++ b/src/rules/require-os.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-os';
 const nodeName = 'os';
 const message = 'os is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-peerDependencies.js b/src/rules/require-peerDependencies.js
index 5df3728..1cca90d 100644
--- a/src/rules/require-peerDependencies.js
+++ b/src/rules/require-peerDependencies.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-peerDependencies';
 const nodeName = 'peerDependencies';
 const message = 'peerDependencies is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-preferGlobal.js b/src/rules/require-preferGlobal.js
index 79b1859..1085178 100644
--- a/src/rules/require-preferGlobal.js
+++ b/src/rules/require-preferGlobal.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-preferGlobal';
 const nodeName = 'preferGlobal';
 const message = 'preferGlobal is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-private.js b/src/rules/require-private.js
index aa3b254..cd8196e 100644
--- a/src/rules/require-private.js
+++ b/src/rules/require-private.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-private';
 const nodeName = 'private';
 const message = 'private is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-publishConfig.js b/src/rules/require-publishConfig.js
index 9609110..9129e5d 100644
--- a/src/rules/require-publishConfig.js
+++ b/src/rules/require-publishConfig.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-publishConfig';
 const nodeName = 'publishConfig';
 const message = 'publishConfig is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-repository.js b/src/rules/require-repository.js
index 7b9de3e..f2631e2 100755
--- a/src/rules/require-repository.js
+++ b/src/rules/require-repository.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-repository';
 const nodeName = 'repository';
 const message = 'repository is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-scripts.js b/src/rules/require-scripts.js
index 20900e4..e11f230 100644
--- a/src/rules/require-scripts.js
+++ b/src/rules/require-scripts.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-scripts';
 const nodeName = 'scripts';
 const message = 'scripts is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/require-version.js b/src/rules/require-version.js
index 1b0f9cf..f90c4bf 100755
--- a/src/rules/require-version.js
+++ b/src/rules/require-version.js
@@ -4,7 +4,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'require-version';
 const nodeName = 'version';
 const message = 'version is required';
-const ruleType = 'required';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!packageJsonData.hasOwnProperty(nodeName)) {
diff --git a/src/rules/scripts-type.js b/src/rules/scripts-type.js
index 70936b3..06ae129 100755
--- a/src/rules/scripts-type.js
+++ b/src/rules/scripts-type.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'scripts-type';
 const nodeName = 'scripts';
 const message = 'Type should be an Object';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isObject(packageJsonData, nodeName)) {
diff --git a/src/rules/valid-values-author.js b/src/rules/valid-values-author.js
index cf41071..edb1fa4 100755
--- a/src/rules/valid-values-author.js
+++ b/src/rules/valid-values-author.js
@@ -5,7 +5,7 @@ const isValidValue = require('./../validators/valid-values').isValidValue;
 const lintId = 'valid-values-author';
 const nodeName = 'author';
 const message = 'Invalid value for author';
-const ruleType = 'valid-values';
+const ruleType = 'array';
 
 const lint = function(packageJsonData, lintType, validValues) {
   if (!isValidValue(packageJsonData, nodeName, validValues)) {
diff --git a/src/rules/valid-values-license.js b/src/rules/valid-values-license.js
index 822f8d4..4af1bd8 100644
--- a/src/rules/valid-values-license.js
+++ b/src/rules/valid-values-license.js
@@ -5,7 +5,7 @@ const isValidValue = require('./../validators/valid-values').isValidValue;
 const lintId = 'valid-values-license';
 const nodeName = 'license';
 const message = 'Invalid value for license';
-const ruleType = 'valid-values';
+const ruleType = 'array';
 
 /**
  * Lints package.json file to check for valid values in the license field
diff --git a/src/rules/valid-values-private.js b/src/rules/valid-values-private.js
index 8ccdef2..cd7c5f0 100755
--- a/src/rules/valid-values-private.js
+++ b/src/rules/valid-values-private.js
@@ -5,7 +5,7 @@ const isValidValue = require('./../validators/valid-values').isValidValue;
 const lintId = 'valid-values-private';
 const nodeName = 'private';
 const message = 'Invalid value for private';
-const ruleType = 'valid-values';
+const ruleType = 'array';
 
 /**
  * [function description]
diff --git a/src/rules/version-format.js b/src/rules/version-format.js
index 1a3dc5a..043e9fc 100755
--- a/src/rules/version-format.js
+++ b/src/rules/version-format.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'version-format';
 const nodeName = 'version';
 const message = 'Format must be a valid semantic version';
-const ruleType = 'format';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isValidVersionNumber(packageJsonData, nodeName)) {
diff --git a/src/rules/version-type.js b/src/rules/version-type.js
index 1f4cad3..b1d7a6a 100755
--- a/src/rules/version-type.js
+++ b/src/rules/version-type.js
@@ -5,7 +5,7 @@ const LintIssue = require('./../LintIssue');
 const lintId = 'version-type';
 const nodeName = 'version';
 const message = 'Type should be a string';
-const ruleType = 'type';
+const ruleType = 'standard';
 
 const lint = function(packageJsonData, lintType) {
   if (!isString(packageJsonData, nodeName)) {


Test patch:
diff --git a/tests/unit/Config.test.js b/tests/unit/Config.test.js
index 22991ac..9667862 100755
--- a/tests/unit/Config.test.js
+++ b/tests/unit/Config.test.js
@@ -379,98 +379,78 @@ describe('Config Unit Tests', function() {
     });
   });
 
-  context('_validateRulesConfig tests', function() {
-    context('when a valid npmpackagejsonlintrc file object is passed', function() {
-      it('true should be returned', function() {
-        const rcFileObj = {
-          'require-author': 'error',
-          'require-version': 'warning',
-          'valid-values-author': ['error', ['Thomas', 'Lindner', 'Thomas Lindner']],
-          'valid-values-private': ['warning', [true, false]],
-          'valid-values-license': ['error', ['private', 'unlicensed']],
-          'prefer-property-order': ['error', ['name', 'version']]
-        };
-        const config = new Config(rcFileObj);
+  context('isArrayRuleConfigValid tests', function() {
+    context('when a rule is an array rule and the first key is not equal to error, warning, or off', function() {
+      it('an error should be thrown', function() {
+        (function() {
+          Config.isArrayRuleConfigValid('valid-values-author', [true, ['Thomas', 'Lindner', 'Thomas Lindner']]);
+        }).should.throw('valid-values-author - first key must be set to "error", "warning", or "off". Currently set to "true".');
+      });
+    });
 
-        config._validateRulesConfig(rcFileObj).should.eql(true);
+    context('when a rule is an array rule and the second key is not an Array', function() {
+      it('an error should be thrown', function() {
+        (function() {
+          Config.isArrayRuleConfigValid('valid-values-author', ['error', 'Thomas']);
+        }).should.throw('valid-values-author - second key must be set an array. Currently set to "Thomas".');
       });
     });
 
-    context('when a valid npmpackagejsonlintrc file object is passed', function() {
+    context('when a valid array rule config is passed', function() {
       it('true should be returned', function() {
-        const rcFileObj = {
-          'require-author': 'error',
-          'require-version': 'warning',
-          'valid-values-author': ['error', ['Thomas', 'Lindner', 'Thomas Lindner']],
-          'valid-values-private': ['warning', [true, false]]
-        };
-        const config = new Config(rcFileObj);
-
-        config._validateRulesConfig(rcFileObj).should.eql(true);
+        Config.isArrayRuleConfigValid('prefer-property-order', ['error', ['name', 'version']]).should.be.true;
       });
     });
 
-    context('when a rule is set to a boolean', function() {
-      it('an error should be thrown', function() {
-        const rcFileObj = {
-          'require-author': true,
-          'require-version': 'warning',
-          'valid-values-author': ['error', ['Thomas', 'Lindner', 'Thomas Lindner']],
-          'valid-values-private': ['warning', [true, false]]
-        };
-        const config = new Config(rcFileObj);
+    context('when a valid array rule config is passed with a value of off', function() {
+      it('true should be returned', function() {
+        Config.isArrayRuleConfigValid('prefer-property-order', 'off').should.be.true;
+      });
+    });
 
+    context('when a invalid array rule config is passed with a value of error', function() {
+      it('true should be returned', function() {
         (function() {
-          config._validateRulesConfig(rcFileObj);
-        }).should.throw('require-author - must be set to "error", "warning", or "off". Currently set to true');
+          Config.isArrayRuleConfigValid('valid-values-author', 'error');
+        }).should.throw('valid-values-author - is an array type rule. It must be set to "off" if an array is not supplied.');
       });
     });
+  });
 
-    context('when a rule is set to a number', function() {
-      it('an error should be thrown', function() {
-        const rcFileObj = {
-          'require-author': 1,
-          'require-version': 'warning',
-          'valid-values-author': ['error', ['Thomas', 'Lindner', 'Thomas Lindner']],
-          'valid-values-private': ['warning', [true, false]]
-        };
-        const config = new Config(rcFileObj);
+  context('isStandardRuleConfigValid tests', function() {
+    context('when a standard rule is passed with a value of error', function() {
+      it('true should be returned', function() {
+        Config.isStandardRuleConfigValid('require-author', 'error').should.be.true;
+      });
+    });
 
-        (function() {
-          config._validateRulesConfig(rcFileObj);
-        }).should.throw('require-author - must be set to "error", "warning", or "off". Currently set to 1');
+    context('when a standard rule is passed with a value of warning', function() {
+      it('true should be returned', function() {
+        Config.isStandardRuleConfigValid('require-author', 'warning').should.be.true;
       });
     });
 
-    context('when a rule is an array rule and the first key is not equal to error, warning, or off', function() {
-      it('an error should be thrown', function() {
-        const rcFileObj = {
-          'require-author': 'error',
-          'require-version': 'warning',
-          'valid-values-author': [true, ['Thomas', 'Lindner', 'Thomas Lindner']],
-          'valid-values-private': ['warning', [true, false]]
-        };
-        const config = new Config(rcFileObj);
+    context('when a standard rule is passed with a value of off', function() {
+      it('true should be returned', function() {
+        Config.isStandardRuleConfigValid('require-author', 'off').should.be.true;
+      });
+    });
 
+    context('when a rule is set to a boolean', function() {
+      it('an error should be thrown', function() {
         (function() {
-          config._validateRulesConfig(rcFileObj);
-        }).should.throw('valid-values-author - first key must be set to "error", "warning", or "off". Currently set to true');
+          Config.isStandardRuleConfigValid('require-author', true);
+        }).should.throw('require-author - must be set to "error", "warning", or "off". Currently set to "true".');
       });
     });
 
-    context('when a rule is an array rule and the second key is not an Array', function() {
+    context('when a rule is set to a number', function() {
       it('an error should be thrown', function() {
-        const rcFileObj = {
-          'require-author': 'error',
-          'require-version': 'warning',
-          'valid-values-author': ['error', 'Thomas'],
-          'valid-values-private': ['warning', [true, false]]
-        };
-        const config = new Config(rcFileObj);
+        const dummyValue = 1;
 
         (function() {
-          config._validateRulesConfig(rcFileObj);
-        }).should.throw('valid-values-author - second key must be set an array. Currently set to Thomas');
+          Config.isStandardRuleConfigValid('require-author', dummyValue);
+        }).should.throw('require-author - must be set to "error", "warning", or "off". Currently set to "1".');
       });
     });
   });
diff --git a/tests/unit/rules/bin-type.test.js b/tests/unit/rules/bin-type.test.js
index 3205dbd..eaae51a 100755
--- a/tests/unit/rules/bin-type.test.js
+++ b/tests/unit/rules/bin-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/bin-type').lint;
+const ruleModule = require('./../../../src/rules/bin-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('bin-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/bundledDependencies-type.test.js b/tests/unit/rules/bundledDependencies-type.test.js
index b063869..2d3c433 100644
--- a/tests/unit/rules/bundledDependencies-type.test.js
+++ b/tests/unit/rules/bundledDependencies-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/bundledDependencies-type').lint;
+const ruleModule = require('./../../../src/rules/bundledDependencies-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('bundledDependencies-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/config-type.test.js b/tests/unit/rules/config-type.test.js
index 87420ca..a1f9a3f 100755
--- a/tests/unit/rules/config-type.test.js
+++ b/tests/unit/rules/config-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/config-type').lint;
+const ruleModule = require('./../../../src/rules/config-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('config-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/cpu-type.test.js b/tests/unit/rules/cpu-type.test.js
index df5038e..2105da6 100755
--- a/tests/unit/rules/cpu-type.test.js
+++ b/tests/unit/rules/cpu-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/os-type').lint;
+const ruleModule = require('./../../../src/rules/os-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('os-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/dependencies-type.test.js b/tests/unit/rules/dependencies-type.test.js
index ffd8b07..75fe4c0 100755
--- a/tests/unit/rules/dependencies-type.test.js
+++ b/tests/unit/rules/dependencies-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/dependencies-type').lint;
+const ruleModule = require('./../../../src/rules/dependencies-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('dependencies-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/description-type.test.js b/tests/unit/rules/description-type.test.js
index 46c097d..24f07c6 100755
--- a/tests/unit/rules/description-type.test.js
+++ b/tests/unit/rules/description-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/description-type').lint;
+const ruleModule = require('./../../../src/rules/description-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('description-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/devDependencies-type.test.js b/tests/unit/rules/devDependencies-type.test.js
index 8ad649b..3cc56cf 100755
--- a/tests/unit/rules/devDependencies-type.test.js
+++ b/tests/unit/rules/devDependencies-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/devDependencies-type').lint;
+const ruleModule = require('./../../../src/rules/devDependencies-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('devDependencies-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/directories-type.test.js b/tests/unit/rules/directories-type.test.js
index deda75e..cb6bc66 100755
--- a/tests/unit/rules/directories-type.test.js
+++ b/tests/unit/rules/directories-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/directories-type').lint;
+const ruleModule = require('./../../../src/rules/directories-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('directories-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/engines-type.test.js b/tests/unit/rules/engines-type.test.js
index 6aacc4e..7207e04 100755
--- a/tests/unit/rules/engines-type.test.js
+++ b/tests/unit/rules/engines-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/engines-type').lint;
+const ruleModule = require('./../../../src/rules/engines-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('engines-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/files-type.test.js b/tests/unit/rules/files-type.test.js
index f2770b5..94ad38b 100755
--- a/tests/unit/rules/files-type.test.js
+++ b/tests/unit/rules/files-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/files-type').lint;
+const ruleModule = require('./../../../src/rules/files-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('files-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/homepage-type.test.js b/tests/unit/rules/homepage-type.test.js
index a8024c6..f992f23 100755
--- a/tests/unit/rules/homepage-type.test.js
+++ b/tests/unit/rules/homepage-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/homepage-type').lint;
+const ruleModule = require('./../../../src/rules/homepage-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('homepage-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/keywords-type.test.js b/tests/unit/rules/keywords-type.test.js
index f2770b5..be81d99 100755
--- a/tests/unit/rules/keywords-type.test.js
+++ b/tests/unit/rules/keywords-type.test.js
@@ -1,21 +1,29 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/files-type').lint;
+const ruleModule = require('./../../../src/rules/keywords-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
-describe('files-type Unit Tests', function() {
+describe('keywords-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
-        files: 'string'
+        keywords: 'string'
       };
       const response = lint(packageJsonData, 'error');
 
-      response.lintId.should.equal('files-type');
+      response.lintId.should.equal('keywords-type');
       response.lintType.should.equal('error');
-      response.node.should.equal('files');
+      response.node.should.equal('keywords');
       response.lintMessage.should.equal('Type should be an Array');
     });
   });
diff --git a/tests/unit/rules/license-type.test.js b/tests/unit/rules/license-type.test.js
index e577aa2..2fa95d3 100755
--- a/tests/unit/rules/license-type.test.js
+++ b/tests/unit/rules/license-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/license-type').lint;
+const ruleModule = require('./../../../src/rules/license-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('license-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/main-type.test.js b/tests/unit/rules/main-type.test.js
index 3d7d92e..23b9ad3 100755
--- a/tests/unit/rules/main-type.test.js
+++ b/tests/unit/rules/main-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/main-type').lint;
+const ruleModule = require('./../../../src/rules/main-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('main-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/man-type.test.js b/tests/unit/rules/man-type.test.js
index af79228..952577e 100644
--- a/tests/unit/rules/man-type.test.js
+++ b/tests/unit/rules/man-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/man-type').lint;
+const ruleModule = require('./../../../src/rules/man-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('man-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/name-format.test.js b/tests/unit/rules/name-format.test.js
index 39b2766..371a4ff 100755
--- a/tests/unit/rules/name-format.test.js
+++ b/tests/unit/rules/name-format.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/name-format').lint;
+const ruleModule = require('./../../../src/rules/name-format');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('name-format Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect format', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/name-type.test.js b/tests/unit/rules/name-type.test.js
index da974d1..ad4db06 100755
--- a/tests/unit/rules/name-type.test.js
+++ b/tests/unit/rules/name-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/name-type').lint;
+const ruleModule = require('./../../../src/rules/name-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('name-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/no-restricted-dependencies.test.js b/tests/unit/rules/no-restricted-dependencies.test.js
index 03217ed..b2491cf 100755
--- a/tests/unit/rules/no-restricted-dependencies.test.js
+++ b/tests/unit/rules/no-restricted-dependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/no-restricted-dependencies').lint;
+const ruleModule = require('./../../../src/rules/no-restricted-dependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('no-restricted-dependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "array"', function() {
+      ruleType.should.equal('array');
+    });
+  });
+
   context('when package.json has node with a restricted value', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/no-restricted-devDependencies.test.js b/tests/unit/rules/no-restricted-devDependencies.test.js
index 9cc373b..328f11e 100755
--- a/tests/unit/rules/no-restricted-devDependencies.test.js
+++ b/tests/unit/rules/no-restricted-devDependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/no-restricted-devDependencies').lint;
+const ruleModule = require('./../../../src/rules/no-restricted-devDependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('no-restricted-devDependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "array"', function() {
+      ruleType.should.equal('array');
+    });
+  });
+
   context('when package.json has node with a restricted value', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/no-restricted-pre-release-dependencies.test.js b/tests/unit/rules/no-restricted-pre-release-dependencies.test.js
index 8b45bfd..e29aa7b 100755
--- a/tests/unit/rules/no-restricted-pre-release-dependencies.test.js
+++ b/tests/unit/rules/no-restricted-pre-release-dependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/no-restricted-pre-release-dependencies').lint;
+const ruleModule = require('./../../../src/rules/no-restricted-pre-release-dependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('no-restricted-pre-release-dependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "array"', function() {
+      ruleType.should.equal('array');
+    });
+  });
+
   context('when package.json has node with a restricted value', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/no-restricted-pre-release-devDependencies.test.js b/tests/unit/rules/no-restricted-pre-release-devDependencies.test.js
index 42a17d5..1823d42 100755
--- a/tests/unit/rules/no-restricted-pre-release-devDependencies.test.js
+++ b/tests/unit/rules/no-restricted-pre-release-devDependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/no-restricted-pre-release-devDependencies').lint;
+const ruleModule = require('./../../../src/rules/no-restricted-pre-release-devDependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('no-restricted-pre-release-devDependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "array"', function() {
+      ruleType.should.equal('array');
+    });
+  });
+
   context('when package.json has node with a restricted value', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/optionalDependencies-type.test.js b/tests/unit/rules/optionalDependencies-type.test.js
index 4da4226..15263d0 100644
--- a/tests/unit/rules/optionalDependencies-type.test.js
+++ b/tests/unit/rules/optionalDependencies-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/optionalDependencies-type').lint;
+const ruleModule = require('./../../../src/rules/optionalDependencies-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('optionalDependencies-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/os-type.test.js b/tests/unit/rules/os-type.test.js
index df5038e..2105da6 100644
--- a/tests/unit/rules/os-type.test.js
+++ b/tests/unit/rules/os-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/os-type').lint;
+const ruleModule = require('./../../../src/rules/os-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('os-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/peerDependencies-type.test.js b/tests/unit/rules/peerDependencies-type.test.js
index 14323a7..f52115a 100644
--- a/tests/unit/rules/peerDependencies-type.test.js
+++ b/tests/unit/rules/peerDependencies-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/peerDependencies-type').lint;
+const ruleModule = require('./../../../src/rules/peerDependencies-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('peerDependencies-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/prefer-absolute-version-dependencies.test.js b/tests/unit/rules/prefer-absolute-version-dependencies.test.js
index 021bcd3..0483042 100644
--- a/tests/unit/rules/prefer-absolute-version-dependencies.test.js
+++ b/tests/unit/rules/prefer-absolute-version-dependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/prefer-absolute-version-dependencies').lint;
+const ruleModule = require('./../../../src/rules/prefer-absolute-version-dependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('prefer-absolute-version-dependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with an invalid value', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/prefer-absolute-version-devDependencies.test.js b/tests/unit/rules/prefer-absolute-version-devDependencies.test.js
index 043276e..843e9a1 100644
--- a/tests/unit/rules/prefer-absolute-version-devDependencies.test.js
+++ b/tests/unit/rules/prefer-absolute-version-devDependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/prefer-absolute-version-devDependencies').lint;
+const ruleModule = require('./../../../src/rules/prefer-absolute-version-devDependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('prefer-absolute-version-devDependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with an invalid value', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/prefer-alphabetical-bundledDependencies.test.js b/tests/unit/rules/prefer-alphabetical-bundledDependencies.test.js
index b96412c..5e964e2 100644
--- a/tests/unit/rules/prefer-alphabetical-bundledDependencies.test.js
+++ b/tests/unit/rules/prefer-alphabetical-bundledDependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/prefer-alphabetical-bundledDependencies').lint;
+const ruleModule = require('./../../../src/rules/prefer-alphabetical-bundledDependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('prefer-alphabetical-bundledDependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with an invalid order', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/prefer-alphabetical-dependencies.test.js b/tests/unit/rules/prefer-alphabetical-dependencies.test.js
index cc5f727..b69a0ea 100644
--- a/tests/unit/rules/prefer-alphabetical-dependencies.test.js
+++ b/tests/unit/rules/prefer-alphabetical-dependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/prefer-alphabetical-dependencies').lint;
+const ruleModule = require('./../../../src/rules/prefer-alphabetical-dependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('prefer-alphabetical-dependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with an invalid order', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/prefer-alphabetical-devDependencies.test.js b/tests/unit/rules/prefer-alphabetical-devDependencies.test.js
index f8e483b..bf5497e 100644
--- a/tests/unit/rules/prefer-alphabetical-devDependencies.test.js
+++ b/tests/unit/rules/prefer-alphabetical-devDependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/prefer-alphabetical-devDependencies').lint;
+const ruleModule = require('./../../../src/rules/prefer-alphabetical-devDependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('prefer-alphabetical-devDependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with an invalid order', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/prefer-alphabetical-optionalDependencies.test.js b/tests/unit/rules/prefer-alphabetical-optionalDependencies.test.js
index 366d33e..d0a1457 100644
--- a/tests/unit/rules/prefer-alphabetical-optionalDependencies.test.js
+++ b/tests/unit/rules/prefer-alphabetical-optionalDependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/prefer-alphabetical-optionalDependencies').lint;
+const ruleModule = require('./../../../src/rules/prefer-alphabetical-optionalDependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('prefer-alphabetical-optionalDependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with an invalid order', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/prefer-alphabetical-peerDependencies.test.js b/tests/unit/rules/prefer-alphabetical-peerDependencies.test.js
index e3492b8..6fd0c02 100644
--- a/tests/unit/rules/prefer-alphabetical-peerDependencies.test.js
+++ b/tests/unit/rules/prefer-alphabetical-peerDependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/prefer-alphabetical-peerDependencies').lint;
+const ruleModule = require('./../../../src/rules/prefer-alphabetical-peerDependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('prefer-alphabetical-peerDependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with an invalid order', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/prefer-caret-version-dependencies.test.js b/tests/unit/rules/prefer-caret-version-dependencies.test.js
index 80c5d03..50d40de 100644
--- a/tests/unit/rules/prefer-caret-version-dependencies.test.js
+++ b/tests/unit/rules/prefer-caret-version-dependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/prefer-caret-version-dependencies').lint;
+const ruleModule = require('./../../../src/rules/prefer-caret-version-dependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('prefer-caret-version-dependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with an invalid value', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/prefer-caret-version-devDependencies.test.js b/tests/unit/rules/prefer-caret-version-devDependencies.test.js
index bfbf66d..92b259a 100644
--- a/tests/unit/rules/prefer-caret-version-devDependencies.test.js
+++ b/tests/unit/rules/prefer-caret-version-devDependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/prefer-caret-version-devDependencies').lint;
+const ruleModule = require('./../../../src/rules/prefer-caret-version-devDependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('prefer-caret-version-devDependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with an invalid value', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/prefer-no-engineStrict.test.js b/tests/unit/rules/prefer-no-engineStrict.test.js
index 991fcad..cf3320c 100644
--- a/tests/unit/rules/prefer-no-engineStrict.test.js
+++ b/tests/unit/rules/prefer-no-engineStrict.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/prefer-no-engineStrict').lint;
+const ruleModule = require('./../../../src/rules/prefer-no-engineStrict');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('prefer-no-engineStrict Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has engineStrict node', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/prefer-no-version-zero-dependencies.test.js b/tests/unit/rules/prefer-no-version-zero-dependencies.test.js
index 09254a8..6c20eb8 100644
--- a/tests/unit/rules/prefer-no-version-zero-dependencies.test.js
+++ b/tests/unit/rules/prefer-no-version-zero-dependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/prefer-no-version-zero-dependencies').lint;
+const ruleModule = require('./../../../src/rules/prefer-no-version-zero-dependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('prefer-no-version-zero-dependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with an invalid value', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/prefer-no-version-zero-devDependencies.test.js b/tests/unit/rules/prefer-no-version-zero-devDependencies.test.js
index a7bfb30..13b551f 100644
--- a/tests/unit/rules/prefer-no-version-zero-devDependencies.test.js
+++ b/tests/unit/rules/prefer-no-version-zero-devDependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/prefer-no-version-zero-devDependencies').lint;
+const ruleModule = require('./../../../src/rules/prefer-no-version-zero-devDependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('prefer-no-version-zero-devDependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with an invalid value', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/prefer-property-order.test.js b/tests/unit/rules/prefer-property-order.test.js
index 4892460..04fea91 100644
--- a/tests/unit/rules/prefer-property-order.test.js
+++ b/tests/unit/rules/prefer-property-order.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/prefer-property-order').lint;
+const ruleModule = require('./../../../src/rules/prefer-property-order');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('prefer-property-order Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "array"', function() {
+      ruleType.should.equal('array');
+    });
+  });
+
   context('when the properties in the package.json file are in the desired order', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/prefer-tilde-version-dependencies.test.js b/tests/unit/rules/prefer-tilde-version-dependencies.test.js
index 25b9ca5..c7bdba9 100644
--- a/tests/unit/rules/prefer-tilde-version-dependencies.test.js
+++ b/tests/unit/rules/prefer-tilde-version-dependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/prefer-tilde-version-dependencies').lint;
+const ruleModule = require('./../../../src/rules/prefer-tilde-version-dependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('prefer-tilde-version-dependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with an invalid value', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/prefer-tilde-version-devDependencies.test.js b/tests/unit/rules/prefer-tilde-version-devDependencies.test.js
index 16772ac..429159f 100644
--- a/tests/unit/rules/prefer-tilde-version-devDependencies.test.js
+++ b/tests/unit/rules/prefer-tilde-version-devDependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/prefer-tilde-version-devDependencies').lint;
+const ruleModule = require('./../../../src/rules/prefer-tilde-version-devDependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('prefer-tilde-version-devDependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with an invalid value', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/preferGlobal-type.test.js b/tests/unit/rules/preferGlobal-type.test.js
index 499fca5..3409103 100755
--- a/tests/unit/rules/preferGlobal-type.test.js
+++ b/tests/unit/rules/preferGlobal-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/preferGlobal-type').lint;
+const ruleModule = require('./../../../src/rules/preferGlobal-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('preferGlobal-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/private-type.test.js b/tests/unit/rules/private-type.test.js
index 6eb3ab4..0b5f292 100755
--- a/tests/unit/rules/private-type.test.js
+++ b/tests/unit/rules/private-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/private-type').lint;
+const ruleModule = require('./../../../src/rules/private-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('private-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/repository-type.test.js b/tests/unit/rules/repository-type.test.js
index 066f165..3e574a7 100755
--- a/tests/unit/rules/repository-type.test.js
+++ b/tests/unit/rules/repository-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/repository-type').lint;
+const ruleModule = require('./../../../src/rules/repository-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('repository-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-author.test.js b/tests/unit/rules/require-author.test.js
index d9e1b2c..7263bdc 100755
--- a/tests/unit/rules/require-author.test.js
+++ b/tests/unit/rules/require-author.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-author').lint;
+const ruleModule = require('./../../../src/rules/require-author');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-author Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-bin.test.js b/tests/unit/rules/require-bin.test.js
index 4742a34..155b4a4 100644
--- a/tests/unit/rules/require-bin.test.js
+++ b/tests/unit/rules/require-bin.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-bin').lint;
+const ruleModule = require('./../../../src/rules/require-bin');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-bin Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-bugs.test.js b/tests/unit/rules/require-bugs.test.js
index 723814d..386c538 100755
--- a/tests/unit/rules/require-bugs.test.js
+++ b/tests/unit/rules/require-bugs.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-bugs').lint;
+const ruleModule = require('./../../../src/rules/require-bugs');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-bugs Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-bundledDependencies.test.js b/tests/unit/rules/require-bundledDependencies.test.js
index 24e91e0..6c0bf1a 100644
--- a/tests/unit/rules/require-bundledDependencies.test.js
+++ b/tests/unit/rules/require-bundledDependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-bundledDependencies').lint;
+const ruleModule = require('./../../../src/rules/require-bundledDependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-bundledDependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-config.test.js b/tests/unit/rules/require-config.test.js
index 097e58f..72de2b7 100644
--- a/tests/unit/rules/require-config.test.js
+++ b/tests/unit/rules/require-config.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-config').lint;
+const ruleModule = require('./../../../src/rules/require-config');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-config Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-contributors.test.js b/tests/unit/rules/require-contributors.test.js
index 647f9c8..faf3ba6 100644
--- a/tests/unit/rules/require-contributors.test.js
+++ b/tests/unit/rules/require-contributors.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-contributors').lint;
+const ruleModule = require('./../../../src/rules/require-contributors');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-contributors Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-cpu.test.js b/tests/unit/rules/require-cpu.test.js
index 492e1a6..bc6ef95 100644
--- a/tests/unit/rules/require-cpu.test.js
+++ b/tests/unit/rules/require-cpu.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-cpu').lint;
+const ruleModule = require('./../../../src/rules/require-cpu');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-cpu Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-dependencies.test.js b/tests/unit/rules/require-dependencies.test.js
index cb09931..95f2a18 100644
--- a/tests/unit/rules/require-dependencies.test.js
+++ b/tests/unit/rules/require-dependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-dependencies').lint;
+const ruleModule = require('./../../../src/rules/require-dependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-dependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-description.test.js b/tests/unit/rules/require-description.test.js
index 52eae01..f37b974 100755
--- a/tests/unit/rules/require-description.test.js
+++ b/tests/unit/rules/require-description.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-description').lint;
+const ruleModule = require('./../../../src/rules/require-description');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-description Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-devDependencies.test.js b/tests/unit/rules/require-devDependencies.test.js
index 58f2532..5df944c 100644
--- a/tests/unit/rules/require-devDependencies.test.js
+++ b/tests/unit/rules/require-devDependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-devDependencies').lint;
+const ruleModule = require('./../../../src/rules/require-devDependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-devDependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-directories.test.js b/tests/unit/rules/require-directories.test.js
index af30c1a..a7ea5cd 100644
--- a/tests/unit/rules/require-directories.test.js
+++ b/tests/unit/rules/require-directories.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-directories').lint;
+const ruleModule = require('./../../../src/rules/require-directories');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-directories Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-engines.test.js b/tests/unit/rules/require-engines.test.js
index fd96601..de2b4b8 100755
--- a/tests/unit/rules/require-engines.test.js
+++ b/tests/unit/rules/require-engines.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-engines').lint;
+const ruleModule = require('./../../../src/rules/require-engines');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-engines Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-files.test.js b/tests/unit/rules/require-files.test.js
index 91d288a..bb8ce17 100644
--- a/tests/unit/rules/require-files.test.js
+++ b/tests/unit/rules/require-files.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-files').lint;
+const ruleModule = require('./../../../src/rules/require-files');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-files Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-homepage.test.js b/tests/unit/rules/require-homepage.test.js
index 4394916..a89867d 100755
--- a/tests/unit/rules/require-homepage.test.js
+++ b/tests/unit/rules/require-homepage.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-homepage').lint;
+const ruleModule = require('./../../../src/rules/require-homepage');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-homepage Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-keywords.test.js b/tests/unit/rules/require-keywords.test.js
index 32faa5f..14b86ba 100755
--- a/tests/unit/rules/require-keywords.test.js
+++ b/tests/unit/rules/require-keywords.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-keywords').lint;
+const ruleModule = require('./../../../src/rules/require-keywords');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-keywords Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-license.test.js b/tests/unit/rules/require-license.test.js
index 36f497f..156a3fb 100755
--- a/tests/unit/rules/require-license.test.js
+++ b/tests/unit/rules/require-license.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-license').lint;
+const ruleModule = require('./../../../src/rules/require-license');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-license Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-main.test.js b/tests/unit/rules/require-main.test.js
index 4a2182a..5189c92 100644
--- a/tests/unit/rules/require-main.test.js
+++ b/tests/unit/rules/require-main.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-main').lint;
+const ruleModule = require('./../../../src/rules/require-main');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-main Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-man.test.js b/tests/unit/rules/require-man.test.js
index 5824719..26b6005 100644
--- a/tests/unit/rules/require-man.test.js
+++ b/tests/unit/rules/require-man.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-man').lint;
+const ruleModule = require('./../../../src/rules/require-man');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-man Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-name.test.js b/tests/unit/rules/require-name.test.js
index c8d6324..8df27d7 100755
--- a/tests/unit/rules/require-name.test.js
+++ b/tests/unit/rules/require-name.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-name').lint;
+const ruleModule = require('./../../../src/rules/require-name');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-name Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-optionalDependencies.test.js b/tests/unit/rules/require-optionalDependencies.test.js
index d867e8d..5f7e2f5 100644
--- a/tests/unit/rules/require-optionalDependencies.test.js
+++ b/tests/unit/rules/require-optionalDependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-optionalDependencies').lint;
+const ruleModule = require('./../../../src/rules/require-optionalDependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-optionalDependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-os.test.js b/tests/unit/rules/require-os.test.js
index 1e327de..23fe427 100644
--- a/tests/unit/rules/require-os.test.js
+++ b/tests/unit/rules/require-os.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-os').lint;
+const ruleModule = require('./../../../src/rules/require-os');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-os Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-peerDependencies.test.js b/tests/unit/rules/require-peerDependencies.test.js
index 6ff4afa..d8f1ccd 100644
--- a/tests/unit/rules/require-peerDependencies.test.js
+++ b/tests/unit/rules/require-peerDependencies.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-peerDependencies').lint;
+const ruleModule = require('./../../../src/rules/require-peerDependencies');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-peerDependencies Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-preferGlobal.test.js b/tests/unit/rules/require-preferGlobal.test.js
index 3bc662e..9114dd4 100644
--- a/tests/unit/rules/require-preferGlobal.test.js
+++ b/tests/unit/rules/require-preferGlobal.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-preferGlobal').lint;
+const ruleModule = require('./../../../src/rules/require-preferGlobal');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-preferGlobal Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-private.test.js b/tests/unit/rules/require-private.test.js
index cb94059..d62385c 100644
--- a/tests/unit/rules/require-private.test.js
+++ b/tests/unit/rules/require-private.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-private').lint;
+const ruleModule = require('./../../../src/rules/require-private');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-private Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-publishConfig.test.js b/tests/unit/rules/require-publishConfig.test.js
index 0d30010..1f86849 100644
--- a/tests/unit/rules/require-publishConfig.test.js
+++ b/tests/unit/rules/require-publishConfig.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-publishConfig').lint;
+const ruleModule = require('./../../../src/rules/require-publishConfig');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-publishConfig Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-repository.test.js b/tests/unit/rules/require-repository.test.js
index 8b08995..758eed8 100755
--- a/tests/unit/rules/require-repository.test.js
+++ b/tests/unit/rules/require-repository.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-repository').lint;
+const ruleModule = require('./../../../src/rules/require-repository');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-repository Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-scripts.test.js b/tests/unit/rules/require-scripts.test.js
index 404a004..69e0937 100644
--- a/tests/unit/rules/require-scripts.test.js
+++ b/tests/unit/rules/require-scripts.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-scripts').lint;
+const ruleModule = require('./../../../src/rules/require-scripts');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-scripts Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/require-version.test.js b/tests/unit/rules/require-version.test.js
index b0564da..2106439 100755
--- a/tests/unit/rules/require-version.test.js
+++ b/tests/unit/rules/require-version.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/require-version').lint;
+const ruleModule = require('./../../../src/rules/require-version');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('require-version Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node', function() {
     it('true should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/scripts-type.test.js b/tests/unit/rules/scripts-type.test.js
index efe09fe..83c74fe 100755
--- a/tests/unit/rules/scripts-type.test.js
+++ b/tests/unit/rules/scripts-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/scripts-type').lint;
+const ruleModule = require('./../../../src/rules/scripts-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('scripts-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/valid-values-author.test.js b/tests/unit/rules/valid-values-author.test.js
index e72e9d3..786789d 100755
--- a/tests/unit/rules/valid-values-author.test.js
+++ b/tests/unit/rules/valid-values-author.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/valid-values-author').lint;
+const ruleModule = require('./../../../src/rules/valid-values-author');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('valid-values-author Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "array"', function() {
+      ruleType.should.equal('array');
+    });
+  });
+
   context('when package.json has node with invalid value', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/valid-values-license.test.js b/tests/unit/rules/valid-values-license.test.js
index d0693fe..d77941c 100644
--- a/tests/unit/rules/valid-values-license.test.js
+++ b/tests/unit/rules/valid-values-license.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/valid-values-license').lint;
+const ruleModule = require('./../../../src/rules/valid-values-license');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('valid-values-license Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "array"', function() {
+      ruleType.should.equal('array');
+    });
+  });
+
   context('when package.json has node with incorrect value', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/valid-values-private.test.js b/tests/unit/rules/valid-values-private.test.js
index f2a8da2..7d6027b 100755
--- a/tests/unit/rules/valid-values-private.test.js
+++ b/tests/unit/rules/valid-values-private.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/valid-values-private').lint;
+const ruleModule = require('./../../../src/rules/valid-values-private');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('valid-values-private Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "array"', function() {
+      ruleType.should.equal('array');
+    });
+  });
+
   context('when package.json has node with incorrect format', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/version-format.test.js b/tests/unit/rules/version-format.test.js
index 3d84540..294d68c 100755
--- a/tests/unit/rules/version-format.test.js
+++ b/tests/unit/rules/version-format.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/version-format').lint;
+const ruleModule = require('./../../../src/rules/version-format');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('version-format Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with invalid version', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {
diff --git a/tests/unit/rules/version-type.test.js b/tests/unit/rules/version-type.test.js
index 4d5dedb..8af95a8 100755
--- a/tests/unit/rules/version-type.test.js
+++ b/tests/unit/rules/version-type.test.js
@@ -1,11 +1,19 @@
 'use strict';
 
 const chai = require('chai');
-const lint = require('./../../../src/rules/version-type').lint;
+const ruleModule = require('./../../../src/rules/version-type');
+const lint = ruleModule.lint;
+const ruleType = ruleModule.ruleType;
 
 const should = chai.should();
 
 describe('version-type Unit Tests', function() {
+  context('a rule type value should be exported', function() {
+    it('it should equal "standard"', function() {
+      ruleType.should.equal('standard');
+    });
+  });
+
   context('when package.json has node with incorrect type', function() {
     it('LintIssue object should be returned', function() {
       const packageJsonData = {