jqlint

1.1.0 • Public • Published

jqlint

JSLint but for jQuery! This is primarily to support my strict jQuery ideals, and may hurt your feelings. :P

This is a static analysis tool, just like JSLint. It is not yet intended to be used as a runtime analysis tool in the browser, but I wouldn't say no to such a Pull Request.

Usage

var jqlint;
jqlint = require('jqlint');

// example code to lint
var code;
code = '$("#id").find(".class").attr("attr", "value");'

var report;
report = jqlint(code);
// report.errors will be an Array of errors found, just like the JSLint report

Assumptions

These will hopefully be reduced over time as jqlint gains sophistication.

  • jQuery is available in any scope as jQuery or $

  • any identifier (e.g. variable or property name) that begins or ends with $ is a cached jQuery selector e.g. $button, input$, etc

Options

The only way to set options currently is to use block comments in your code, like JSLint. For example: /*jslint angular:true*/

angular (default: false)

  • if true: identifiers beginning with $ will not be treated like cached jQuery selectors (e.g. $scope)

Detected Errors

This list will continue to grow.

jqlint currently detects:

  • use of features deprecated in jQuery 1.3: jQuery.browser, jQuery.boxModel

  • use of features deprecated in jQuery 1.7: .die(), .live(), .selector, jQuery.sub()

  • use of features superseded in jQuery 1.7: .bind(), .unbind(), .delegate(), .undelegate()

  • use of features deprecated in jQuery 1.8: .andSelf(), .error(), .load(), .unload(), .size(), .toggle()

  • use of features deprecated in jQuery 1.8: .context

  • use of features designed only for jQuery-internal use: jQuery.support

  • deferred = $.Deferred() in constructor form without new keyword

Readme

Keywords

Package Sidebar

Install

npm i jqlint

Weekly Downloads

1

Version

1.1.0

License

BSD

Last publish

Collaborators

  • jokeyrhyme