寫個 script 在 shell 透過 rhino.jar 跑 fulljslint.js,在 Vim 也寫個 function 呼叫它,於是可以用 quickfix window 除錯。
- 在 Windows 上沒用。
- 不使用 jslint.vim。 雖然跨系統、放 jslintrc 設定檔等作法很棒,但是 1) 即時檢查和 highlight 標錯的顯示方式都不是我要的,甚至有點惱人。 2) 想試試直接用大師寫的 fulljslint.js,在 Vim 以外的地方可能也較好整合。
- 不使用 javaScriptLint.vim,因為 JavaScript Lint 不是 JSLint 啊,跟這主題無關。
- 使用 Rhino 當 JavaScript engine,因為最好裝。
不過它的 JavaScript 版本只實作到 1.7(Firefox 2 的程度)所以像 JSON 就不能直接吃,要多 include 個 JSON2.js。 - 具體用到的檔案:
- ~/bin/jslint (唯一實際被叫的指令,內容主要是 java -cp rhino.jar …)
- ~/scripts/fulljslint.js (即 Douglas Crockford 的 fulljslint.js)
- ~/scripts/jslint.js (由官網的 rhino.js(現已移除)修改而來,連接 fulljslint 和 rhino)
- ~/scripts/json2.js
- ~/scripts/rhino.jar
- 修改錯誤訊息的格式,改成跟 closure compiler 相似,就不必再調 Vim 的 errorformat。
- 目前 JSLint 用的預設 option 直接寫在呼叫 fulljslint.js 用的 script(jslint.js)裡。
- 在 shell 中呼叫的指令是
jslint file.js '{"extraOptionKey":value}'
。 extraOption 可以用來蓋掉預設選項。 - 在 Vim 中呼叫的指令是
:JSLint
。
取得檔案
- fulljslint.js - douglascrockford/JSLint - GitHub
- json2.js - douglascrockford/JSON-js - GitHub
- rhino.jar - Download Rhino - MDC Doc Center (即 rhino1_7R2.zip 裡的 js.jar)
- bin/jslint、scripts/jslint.js 和 vimrc 設定例 - gist: 754754 - Using JSLint command within Vim.- GitHub
- 以上 js 檔案皆沒壓縮,實際使用前我會先讓 closure-complier 壓一下。