htmlhint&csslint&jshint配置參數詳解

htmlHint&csslint&eslint配置詳解

最近在弄前端自動化測試的工具,使用htmlHint等插件來檢查源碼的編寫規範,但是這些插件的參數設置的文檔說明特別難找。都是英文的,自己找了大致翻譯了下。

ESLint配置詳解

以下僅爲自己項目常用的配置,詳細配置請查看官網詳細文檔
官網詳細文檔 ESLint規則文檔

"rules": {
 /*
 *以下的 off||0代表關閉
 *warm||1 代表拋出Error,不會使編譯退出
 *error||2代表拋出錯誤,會導致編譯退出
 */
"quotes": [0, "double"], //引號類型  強制 "" '' 
"semi": [1, "always"], //語句強制分號結尾
"no-console": 2, //不允許console  建議調試環境關閉 
"no-alert": 0, //禁止使用alert confirm prompt
"no-cond-assign": 2, //禁止在條件表達式中使用賦值語句
//TODO 2->0 by pjl
"no-constant-condition": 1, //禁止在條件中使用常量表達式 if(true) if(1)
"no-debugger":  2, //禁止使用debugger  建議調試環境關閉
"no-div-regex": 1, //不能使用看起來像除法的正則表達式/=foo/
"no-dupe-keys": 2, //在創建對象字面量時不允許鍵重複 {a:1,a:1}
"no-dupe-args": 2, //函數參數不能重複
"no-duplicate-case": 2, //switch中的case標籤不能重複
"no-empty": 0, //塊語句中的內容不能爲空
"no-eq-null": 0, //禁止對null使用==或!=運算符
"no-eval": 1, //禁止使用eval
"no-ex-assign": 1, //禁止給catch語句中的異常參數賦值
"no-extend-native": 0, //禁止擴展native對象   禁止修改prototype
"no-extra-parens": 0, //禁止非必要的括號   有時候多餘的括號能使邏輯更清晰
"no-extra-semi": 2, //禁止多餘的冒號
"no-floating-decimal": 2, //禁止省略浮點數中的0 .5 3.
"no-func-assign": 2, //禁止重複的函數聲明
"no-inline-comments": 0, //禁止行內備註
"no-inner-declarations": [0, "functions"], //禁止在塊語句中使用聲明(變量或函數)
"no-multiple-empty-lines": [1, {
  "max": 3
}], //空行最多不能超過3行
"arrow-parens": 0, //箭頭函數用小括號括起來
"arrow-spacing": 0, //=>的前/後括號
//TODO 1修改爲0 by pjl
"camelcase": 0, //強制駝峯法命名
"comma-spacing": 0, //逗號前後的空格
"comma-style": [0, "last"], //逗號風格,換行時在行首還是行尾
"consistent-return": 0, //return 後面是否允許省略
"consistent-this": [0, "that"], //this別名
"default-case": 0, //switch語句最後必須有default
"dot-location": 0, //對象訪問符的位置,換行的時候在行首還是行尾
"dot-notation": [0, {
  "allowKeywords": true
}], //避免不必要的方括號
"eqeqeq": 0, //必須使用全等
"guard-for-in": 0, //for in循環要用if語句過濾
"id-length": 0, //變量名長度
"init-declarations": 0, //聲明時必須賦初值
"new-cap": 0, //函數名首行大寫必須使用new方式調用,首行小寫必須用不帶new方式調用        由於組件的使用都是大寫  暫時關閉
"new-parens": 2, //new時必須加小括號
"one-var": 0, //連續聲明    最好不要開啓,要不滿屏的綠色 
"operator-linebreak": [0, "after"], //換行時運算符在行尾還是行首
"padded-blocks": 0, //塊語句內行首行尾是否要空行
"quote-props": [0, "always"], //對象字面量中的屬性名是否強制雙引號     consistent-as-needed:如果有屬性名稱要求使用引號,則所有的屬性名稱都要使用引號;否則,禁止所有的屬性名稱使用引號
"radix": 0, //parseInt必須指定第二個參數
"id-match": 0, //命名檢測
"semi-spacing": [0, {
  "before": false,
  "after": true
}], //分號前後空格
"sort-vars": 0, //變量聲明時排序
"space-after-keywords": [0, "always"], //關鍵字後面是否要空一格
"use-isnan": 2, //禁止比較時使用NaN,只能用isNaN()
"valid-typeof": 2, //必須使用合法的typeof的值
"vars-on-top": 0, //var必須放在作用域頂部
//以下規則與 Js 代碼中可能的語法錯誤或邏輯錯誤有關
// 禁止 for 循環出現方向錯誤的循環,比如 for (i = 0; i < 10; i--)
'for-direction': 2,
// 禁止與負零進行比較
'no-compare-neg-zero': 2,
// 將 var 定義的變量視爲塊作用域,禁止在塊外使用
'block-scoped-var': 2,
// switch 的 case 內必須有 break, return 或 throw
// by pjl 之前遇到過未寫break導致下面那個case也執行了
'no-fallthrough': 2,
// @變量申明 以下規則與變量申明有關
// 禁止重複定義變量
'no-redeclare': 2,
// 禁止使用保留字作爲變量名
'no-shadow-restricted-names': 2,
// 禁止使用未定義的變量
'no-undef': [
  2, {
    "typeof": false
  }
],
// ECMAScript 6
// 這些規則與 ES6有關 
// 禁止對定義過的 class 重新賦值
'no-class-assign': 2,
// 禁止對使用 const 定義的常量重新賦值
'no-const-assign': 2,
// 禁止重複定義類
'no-dupe-class-members': 2

}

HtmlHint配置詳解

    {
    //標籤名 小寫
    "tagname-lowercase": true,
    //屬性名稱小寫
    "attr-lowercase": true,
    //屬性值使用雙引號    
    "attr-value-double-quotes": true,
    //屬性值不能爲空    
    "attr-value-not-empty": false,
    //屬性值不能重定義    
    "attr-no-duplication": true,
    //html標籤在頭部    
    "doctype-first": false,
    //標籤配對    
    "tag-pair": true,
    //標籤自閉    
    "tag-self-close": false,
    //id唯一
    "id-unique": true,
    //src非空
    "src-not-empty": true,
    //title必須    
    "title-require": false,
    //alt必須    
    "alt-require": false,
    //<!DOCTYPE>檢查
    "doctype-html5": false,
    //文件內部樣式禁止    
    "style-disabled": false,
    //內聯css機制    
    "inline-style-disabled": false,
    //內聯js禁止    
    "inline-script-disabled": false,
    //屬性特殊字符檢查    
    "attr-unsafe-chars": false,
    //頭部js文件檢查
    "head-script-disabled": false
    }  

cssLint配置詳解

        cssCheckOptions: {
        //是否檢測 !important
        "important": false,

        //是否允許 .bar.foo 這種兩個連在一起的選擇器

        //未知屬性檢測
        "known-properties": true,

        //重複屬性檢測
        "duplicate-properties": true,

        //border-box 和 box-sizing檢測
        "box-sizing": false,  

        //width、height 與 border  padding值一起使用時 發出警告
        "box-model": false,  

        //display與一些其他值不能同時使用  
        //如 inline 不能與height同時使用   block不能使用 vertical-align   table-*不能使用float
        "display-property-grouping":true,  

        //不允許使用重複的背景圖片   如果是精靈圖  背景圖在一個公共的類裏引用 其他類用於調整位置
        "duplicate-background-images":true,  

        //gradient 這種需要跨瀏覽器兼容的屬性應該寫在一起  避免漏改
        "gradients":true,  

        //rgba  hsl  hsla這種類型的顏色會提出警告
        "fallback-colors":true,  

        //font-size的聲明不應該超過10條  
        "font-sizes":false,  

        //@font-face  這種外部字體規則不要引入太多
        "font-faces":false,  

        //float條數超過10條時,警告
        "floats":false,  

        //以*開頭的屬性檢測    如  *width  檢測到會報錯
        "star-property-hack":false,  

        //以_開頭的屬性檢測
        "underscore-property-hack":false,  

        //若有  outline:0 或 outline:none的情況並且選擇器沒有:focus僞類  警告   
        //或者選擇器有:focus僞類 但是隻有outline一條屬性 警告
        "outline-none":false,  

        //不允許導入css  @import url(more.css);
        "import":true,  

        //id選擇器不要放在頭部  例如  #head a{}這種  應該單獨使用  因爲css解析從右向左解析,這樣反而降低了效率
        "ids":false,  

        //h1-h6應該在頭部定義 而不能再子類中再次定義 例如.box h3 {font-weight: normal;}是不行的
        //.item:hover h3 { font-weight: bold; } 也是不行的    正確的是  h3{font-weight:normal}
        "qualified-headings":false,  

        //如果你把 margin的top bottom left right都定義一遍就警告你!╭(╯^╰)╮   如果只定義了其中1~2個不會警告
        //正確食用  margin:20px 10px 5px 11px;
        "shorthand":true,  

        //text-indent不能使用負值  除非同屬性direction:ltr一起出現
        "text-indent":false,  

        //h1-h6 只應該被定義一次   僞類不算
        "unique-headings":false,  

        //若*選擇器 是key選擇器的話(最右邊那個) 警告
        "universal-selector":false,  

        //類似於[type=text]的選擇器作爲key選擇器的時候  瀏覽器會先把所有的節點匹配  然後去檢查他們的type屬性會降低效率
        "unqualified-attributes":false,  

        //不能只有前綴屬性,沒有通用屬性  -moz-border-radius  並且通用屬性必須在最後
        "vendor-prefix":false,  

        //不允許 0px  0% 0em等
        "zero-units":true
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章