node package manager
Don’t reinvent the wheel. Reuse code within your team. Create a free org »

buenos-jscs

Buenos JSCS!

A NodeJS wrapper around the JSCS code style checker, for your convenience.

Part of the buenos linting family: buenos-jshint, buenos-jscs, buenos-htmllint.

Installing

$ npm install --save-dev buenos-jscs 

Usage

In a node file

var $buenosJscs = require('buenos-jscs');
 
$buenosJscs(options);

From your package.json

{
    "scripts": {
        "buenos-jscs": "buenos-jscs"
    }
}
$ npm run buenos-jscs

Options

{
 
    /**
     * Optional. Array of reporters. Each reporter is called with the jscs results
     */
    reporters: [
    
        // a reporter can be an array where key 0 is the function 
        [ someFunction ],
        
        // a reporter can also be given a config variable
        [ someFunction, optionalConfig ],
        
        // a reporter may also be a direct function, not wrapped in an array
        someFunction,
        
        // default value:
        [ $buenosJscs.reporter, { path: './reports/buenos-jscs.json' }]
        
    ],
    
    
    /**
     * Optional. Globs using minimatch. default value:
     */
    src: [
        './**/*.js',
        '!./**/node_modules/**/*',
        '!./**/bower_components/**/*'
    ],
    
    
    /**
     * Optional. A configured jscs instance.
     * By default an instance is created and configured with registerDefaultRules()
     */
    jscs: new require('jscs'),
    
    
    /**
     * Optional. Jscs rules. May be:
     * - a file path to the rules json
     * - an object containing the rules
     * When left out it will follow this order to get its config:
     * - any parent package.json with a jscsConfig property
     * - a .jscsrc file in current folder or up
     * - a .jscs.json file in current folder or up
     * - embedded config (default)
     */
    jscsConfig: './myConfig.json'
}

API

BuenosJscs (class)

var $buenosJscs = require('buenos-jscs');
 
var instance = new $buenosJscs();

.log

The log object containing the status of the checked files.

.options

The parsed options object.

.checker

The configured jscs instance.

.promise

A promise that is resolved when the checker is complete. The log is provided as argument.

var $buenosJscs = require('buenos-jscs');
 
var instance = new $buenosJscs();
instance.promise.then(function (log) {
    // done processing!
    console.log(log);
});

reporter

The default reporter. Useful in case you want to combine your own reporter with the default reporter.

var $buenosJscs = require('buenos-jscs');
 
new $buenosJscs({
    reporters: [
        [ $buenosJscs.reporter, { path: './reports/buenos-jscs.json' }],
        myReporter
    ]
});

embeddedConfig

Returns the jscs config as embedded in the module.

var $buenosJscs = require('buenos-jscs');
 
console.log(
    $buenosJscs.embeddedConfig()
);

Reporters

You can specify your own reporters. A reporter is called as a function, the first argument being the log, the second argument being the reporter config (if defined).

var $buenosJscs = require('buenos-jscs');
 
new $buenosJscs({
    reporters: [
    
        // function, no config can be defined
        reporterWithoutConfig,
        
        // array of function, no config defined 
        [ reporterWithoutConfig ],
        
        // array of function and config obj
        [ reporterWithConfig, { myConfig: 'defined' } ]
    ]
});
 
function reporterWithoutConfig (log, config) {
    
    // log = BuenosJscs.log
    // config = undefined
    
}
 
 
function reporterWithConfig (log, config) {
    
    // log = BuenosJscs.log
    // config = { myConfig: 'defined' };
    
}

Log format

{
    // where did the jscs config come from?
    "jscsConfig": "embedded", // embedded, custom, or file path
    
    // how many files are checked?
    "totalCount": 7,
    
    // how many files passed?
    "successCount": 7,
    
    // how many files failed?
    "failureCount": 0,
    
    // object of files checked
    "files": {
    
        // file name
        "index.js": {
        
            // how many errors were found in this file?
            "errorCount": 0,
            
            // array of errors found in this file
            "errors": [],
            
            // did the file pass the check?
            "passed": true
        },
        "lib/checker.js": {
            "errorCount": 0,
            "errors": [],
            "passed": true
        }
    }
}