Skip to content

Commit

Permalink
Run eslint in tools/lint-all with npm run --silent lint
Browse files Browse the repository at this point in the history
This commit adds a basic eslintrc that emulates jslint defaults.
Rules that conflict with our existing code have been switched to
warnings instead of errors. Globals have been added to the eslintrc. The
bundled js file (generated by webpack) and blueslip.js are ignored with
.eslintignore.

To display warnings, run npm run lint-loud. This runs eslint without the
--quiet option on static/js and frontend_tests.

npm run --silent lint is run by tools/lint-all (in addition to jslint).
The --silent option is used to suppress the default output from npm run.

Fixes zulip#535.
  • Loading branch information
arpith authored and timabbott committed Nov 19, 2016
1 parent 2d81813 commit 497c770
Show file tree
Hide file tree
Showing 6 changed files with 219 additions and 6 deletions.
4 changes: 4 additions & 0 deletions .eslintignore
@@ -0,0 +1,4 @@
static/js/bundle.js
static/js/blueslip.js
puppet/zulip_ops/files/statsd/local.js
tools/jslint/check-all.js
177 changes: 177 additions & 0 deletions .eslintrc
@@ -0,0 +1,177 @@
{
"env": {
"node": true
},
"globals": {
"$": false,
"_": false,
"jQuery": false,
"Spinner": false,
"Handlebars": false,
"XDate": false,
"zxcvbn": false,
"LazyLoad": false,
"Dropbox": false,
"SockJS": false,
"marked": false,
"i18n": false,
"bridge": false,
"page_params": false,
"status_classes": false,
"password_quality": false,
"csrf_token": false,
"typeahead_helper": false,
"popovers": false,
"server_events": false,
"ui": false,
"stream_color": false,
"people": false,
"navigate": false,
"settings": false,
"resize": false,
"loading": false,
"compose": false,
"compose_fade": false,
"subs": false,
"timerender": false,
"message_edit": false,
"reload": false,
"composebox_typeahead": false,
"search": false,
"topic_list": false,
"gear_menu": false,
"hashchange": false,
"message_list": false,
"Filter": false,
"pointer": false,
"util": false,
"MessageListView": false,
"blueslip": false,
"rows": false,
"WinChan": false,
"muting_ui": false,
"Socket": false,
"channel": false,
"viewport": false,
"avatar": false,
"feature_flags": false,
"search_suggestion": false,
"referral": false,
"notifications": false,
"message_flags": false,
"bot_data": false,
"stream_list": false,
"narrow": false,
"admin": false,
"stream_data": false,
"muting": false,
"Dict": false,
"unread": false,
"alert_words_ui": false,
"message_store": false,
"favicon": false,
"condense": false,
"floating_recipient_bar": false,
"tab_bar": false,
"emoji": false,
"activity": false,
"invite": false,
"colorspace": false,
"tutorial": false,
"templates": false,
"alert_words": false,
"fenced_code": false,
"echo": false,
"localstorage": false,
"current_msg_list": true,
"home_msg_list": false,
"pm_list": false,
"unread_ui": false
},
"rules": {
"no-alert": 2,
"no-array-constructor": 2,
"no-caller": 2,
"no-bitwise": 2,
"no-catch-shadow": 2,
"comma-dangle": 0,
"no-console": 1,
"no-control-regex": 2,
"no-debugger": 2,
"no-div-regex": 2,
"no-dupe-keys": 2,
"no-else-return": 1,
"no-empty": 1,
"no-empty-character-class": 2,
"no-eq-null": 2,
"no-eval": 2,
"no-ex-assign": 2,
"no-extra-semi": 2,
"no-func-assign": 2,
"no-floating-decimal": 2,
"no-implied-eval": 2,
"no-with": 2,
"no-fallthrough": 2,
"no-unreachable": 2,
"no-undef": 2,
"no-undef-init": 2,
"no-unused-expressions": 2,
"no-octal": 2,
"no-octal-escape": 2,
"no-obj-calls": 2,
"no-multi-str": 2,
"no-new-wrappers": 2,
"no-new": 2,
"no-new-func": 2,
"no-native-reassign": 2,
"no-plusplus": 1,
"no-delete-var": 2,
"no-return-assign": 2,
"no-new-object": 2,
"no-label-var": 2,
"no-ternary": 0,
"no-self-compare": 2,
"no-sync": 2,
"no-underscore-dangle": 1,
"no-loop-func": 1,
"no-labels": 2,
"no-unused-vars": 1,
"no-script-url": 2,
"no-proto": 2,
"no-iterator": 2,
"no-mixed-requires": [0, false],
"no-extra-parens": ["error", "functions"],
"no-shadow": 1,
"no-use-before-define": 2,
"no-redeclare": 2,
"no-regex-spaces": 2,
"brace-style": [1, "1tbs"],
"block-scoped-var": 0,
"camelcase": 1,
"complexity": [0, 4],
"curly": 2,
"dot-notation": 2,
"eqeqeq": 2,
"guard-for-in": 0,
"max-depth": [0, 4],
"max-len": [0, 80, 4],
"max-params": [0, 3],
"max-statements": [0, 10],
"new-cap": 1,
"new-parens": 2,
"one-var": 1,
"quotes": [1, "single"],
"quote-props": 0,
"radix": 0,
"semi": 2,
"keyword-spacing": 1,
"space-before-blocks": 1,
"strict": 1,
"unnecessary-strict": 0,
"use-isnan": 2,
"valid-typeof": 0,
"wrap-iife": 2,
"wrap-regex": 0,
"yoda": 1
}
}
16 changes: 16 additions & 0 deletions frontend_tests/.eslintrc
@@ -0,0 +1,16 @@
{
"env": {
"shared-node-browser": true
},
"globals": {
"assert": false,
"add_dependencies": false,
"casper": false,
"document": false,
"set_global": false,
"window": false
},
"rules": {
"no-sync": 1
}
}
16 changes: 10 additions & 6 deletions package.json
Expand Up @@ -16,17 +16,21 @@
"webpack": "1.12.2"
},
"devDependencies": {
"casperjs": "1.1.3",
"cssstyle": "0.2.29",
"eslint": "^3.9.1",
"htmlparser2": "3.8.3",
"istanbul": "0.4.0",
"jsdom": "9.4.1",
"xmlhttprequest": "1.5.0",
"nwmatcher": "1.3.6",
"htmlparser2": "3.8.3",
"cssstyle": "0.2.29",
"webpack-dev-server": "1.12.1",
"phantomjs-prebuilt": "2.1.7",
"casperjs": "1.1.3"
"webpack-dev-server": "1.12.1",
"xmlhttprequest": "1.5.0"
},
"scripts": {
"lint": "eslint --quiet",
"lint-loud": "eslint static/js frontend_tests"
},
"scripts": {},
"repository": {
"type": "git",
"url": "https://github.com/zulip/zulip.git"
Expand Down
5 changes: 5 additions & 0 deletions static/js/.eslintrc
@@ -0,0 +1,5 @@
{
"env": {
"browser": true
}
}
7 changes: 7 additions & 0 deletions tools/lint-all
Expand Up @@ -492,6 +492,13 @@ def run():
+ by_lang['js'])
return result

@lint
def eslint():
# type: () -> int
result = subprocess.call(['npm', 'run', '--silent', 'lint']
+ by_lang['js'])
return result

@lint
def puppet():
# type: () -> int
Expand Down

0 comments on commit 497c770

Please sign in to comment.