Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    kolintpublic

    kolint

    It's like JSHint for Knockout apps! It scans your JavaScript code and reports any issues it finds. Ideally, this should be run on your ViewModels.

    This library contains a NPM module which includes a CLI.

    Installation & Usage

    Install node and npm and run this command ( omit the -g switch if you don't want it to be registered globally):

    npm install -g kolint

    To run, for example:

    kolint myfile.js

    Usage:

    kolint <files> <options>

    Arguments:

    files: Path to file(s): in glob format, e.g. some/folder/**/*.js

    options (optional)

    --jsonOut=filename : JSON report output file

    --debug : output debug messages

    Note that only .js files will be processed when the CLI is run.

    Rules

    There are currently three rules defined:

    abspecific

    Always specify a DOM node when calling ko.applyBindings. Binding to the entire document is fine in simple scenarios but should be avoided in larger apps.

    /* BAD */
    ko.applyBindings(viewModel);
     
    /* GOOD */
    ko.applyBindings(viewModel, document.getElementById("myApp"));

    nodom

    Never interact with the DOM directly except when in a custom binding handler. DOM manipulation inside a ViewModel breaks MVVM, degrades maintainability and complicates unit testing.

    /* BAD */
    var vm = {
        doStuff: function() {
            $("myMessage").fadeIn();
        }
    }

    subscribeself

    Never update the observable you're subscribed to. This is typically done for input sanitization and results in the subsciption firing twice. Use an extender instead.

    /* BAD */
    var vm = {
        name: ko.observable()
    };
    vm.name.subscribe(function(newVal){
        vm.name(newVal.toUpperCase());
    });

    Configuration

    All rules are on by default. To specify which rules to use, place a .kohintrc file in your current wodking directory (CWD) like so:

    {
        "abspecific":       true,
        "nodom":            true,
        "subscribeself":    true
    }

    You can also opt-out specific files by saving a .kolintignore file in the CWD. This file should contain glob-style entries on each line like so:

    gruntfile.js
    some/dir/*.js
    some/otherDir/**/*.js
    

    Note: entries in .kolintignore must align with the arguments you pass to the CLI. For example, .\folder\* does not equal folder\*

    API

    To use the API directly:

    var KOLint = require("kolint");
    
    var kolint = new KOLint();
    
        // or, to override default settings
        var kolint = new KOLint({
            "abspecific":       false,
            "nodom":            true,
            "subscribeself":    true
        });
    
    // to validate a string...
    var errors = kolint.validateString(str);
    
    // to validate a file...
    kolint.validateFile(path, callback); 
    
    // The callback is passed two arguments: `(error, lintErrors)`, 
    // where `lintErrors` is the array of lint errors
    

    Contributing

    npm install to download the modules you need.

    grunt to build, jshint and run tests. See the Gruntfile.js for more info.

    The tests\samples directory contains sample JS files used in unit tests. The make-ast-files grunt task converts these into AST format and puts them in tests\samples\ast.

    To run the CLI without linking: node src/cli.js path/to/file.js

    Keywords

    install

    npm i kolint

    Downloadsweekly downloads

    10

    version

    1.1.0

    license

    MIT

    repository

    githubgithub

    last publish

    collaborators

    • avatar