Backbone specific linting rules for ESLint
JavaScript
Latest commit ef67691 Sep 12, 2016 @m90 m90 committed with Add rule for enforcing alphabetic sorting of keys in a views event ha…
…sh (#67)

* add rule for enforcing alphabetic sorting of keys in a views event hash

* add rule to README toc

* reintroduce trailing whitespace in README eaten by editorconfig
Permalink
Failed to load latest commit information.
docs/rules Add rule for enforcing alphabetic sorting of keys in a views event ha… Sep 12, 2016
lib Add rule for enforcing alphabetic sorting of keys in a views event ha… Sep 12, 2016
tests/lib/rules
.editorconfig model-defaults and defaults-on-top rules Sep 10, 2014
.eslintignore Rule no-el-assign (fixes #12) Sep 28, 2014
.eslintrc
.gitattributes
.gitignore Update no-native-jquery with options Feb 22, 2015
.travis.yml Update travis to run in docker Sep 16, 2015
LICENSE Initial commit Sep 9, 2014
README.md Add rule for enforcing alphabetic sorting of keys in a views event ha… Sep 12, 2016
index.js
package.json 2.0.2 Jul 10, 2016

README.md

NPM version build status

eslint-plugin-backbone

Backbone specific linting rules for ESLint

How to use

Install ESLint either locally or globally

npm install eslint@">=1.0.0"

or

npm install eslint@">=1.0.0" --save-dev

eslint-plugin-backbone requires ESLint with version greater then 1.0.0 if you would like to use your own base models.

Install Backbone plugins.

If you installed ESLint globally, you have to install Backbone plugin globally too. Otherwise, install it locally.

npm install eslint-plugin-backbone

or

npm install eslint-plugin-backbone --save-dev

Default configuration

Deprecated in v2

note: ESLint v2 removed support for default configurations. Please see config below for details.

If you are using ESLint >0.9.0 then this plugin will provide default configuration. If you are fine with defaults, you do not need to update your .eslintrc file.

Defaults are currently set to the following:

    "collection-model": 2,
    "defaults-on-top": 1,
    "event-scope": 1,
    "events-on-top": [1, ["tagName", "className"]],
    "initialize-on-top": [1, { View: ["tagName", "className", "events"], Model: ["defaults", "url", "urlRoot"], Collection: ["model", "url"] }],
    "model-defaults": 2,
    "no-changed-set": 2,
    "no-collection-models": 2,
    "no-constructor": 1,
    "no-el-assign": 2,
    "no-model-attributes": 2,
    "no-native-jquery": [1, "selector"],
    "no-silent": 1,
    "no-view-collection-models": 2,
    "no-view-model-attributes": 2,
    "no-view-onoff-binding": 2,
    "no-view-qualified-jquery": 0,
    "render-return": 2

Configuration

In version 2.0.0 removed support for default configurations for plugins and replaced it with ability for plugins to bundle configs. This plugin include recommended configuration that you can extend from to enable recommended setup of the rules (see "Default configuration" for the list of enabled rules).

To enable bundled config modify your .eslintrc file to include the following line:

{
    "extends": "plugin:backbone/recommended"
}

This will enable all of the rules listed above, as well as add two global variables - Backbone and _.

Modify .eslintrc for your project

Add plugins section and specify eslint-plugin-backbone as a plugin

{
    "plugins": [
        "backbone"
    ]
}

Enable all of the rules that you would like to use

{
    "rules": {
        "backbone/collection-model": 1,
        "backbone/defaults-on-top": 1,
        "backbone/model-defaults": 1,
        "backbone/no-constructor": 1,
        "backbone/no-native-jquery": 1,
        ...
    }
}

If you are using custom models/view/collection bases you also have to specify each on in the settings section

{
    "settings": {
        "backbone": {
            "Collection": ["Backbone.NestedCollection", "MyCollection"],
            "Model": ["MyBaseModel"],
            "View": ["MyBaseView"]
        }
    }
}

List of supported rules