[AST Eslint]いいえスキーマオプションを使用してコンソール&& isPrimitiveは、

// eslint演習4(無コンソール)
 // あなたがこの練習を終了したら、実行
 //    「exercise.eslint.5を開始NPM」
 //    次の運動に移動する

のconst disallowedMethods = [ ログ' 情報'' 警告'' エラー'' DIR ' ] 

module.exportsは = { 
  メタ:{ 
    スキーマ:[ 
      { 
        タイプ:' オブジェクト' 
        特性:{ 
          allowedMethods:{ 
            タイプ:' アレイ' 
            アイテム:{ 
              列挙:[ ' ログ'' 情報'' 警告'' エラー'' DIR ' ]、
            }、
            minItems:1 
            uniqueItems:
          } 、
        } 
      }、
    ]、
  }、
  {(コンテキスト)を作成
    CONSTをコンフィグ= context.options [ 0 ] || {}
     CONST allowedMethods = config.allowedMethods || []
     リターン{ 
      識別子(ノード){ 
        場合looksLike(ノード、{ 
            名:' コンソール' 
            親:{ 
              タイプ:' MemberExpression ' 
              親:{タイプ:' CallExpression ' }、
              プロパティ:{ 
                名:ヴァル => 
                  !allowedMethods.includes(ヴァル)&&
                  disallowedMethods.includes(ヴァル)、
              }、
            } 
          })
        ){ 
          リターン
        } 
        context.report({ 
          ノード:node.parent.property、
          メッセージ:' コンソールを使用して許可されていません' 
        })
      } 
    } 
  } 
} 

関数looksLike (B){ 
  リターン && 
    B && 
    Object.keys(B).every(BKEY => {
       CONST BVAL = B [BKEY]
       CONSTアバール=【BKEY]
       場合typeof演算 BVAL === ' 関数' ){
         リターンBVAL(アバール)
      } 
      戻り isPrimitive(BVAL)?BVAL === アバール:looksLike(アバール、BVAL)
    }) 
} 

関数isPrimitive(ヴァル){ 
  リターンヴァル== NULL || / ^ [SBN] /。試験(typeof演算ヴァル)
}

 

// eslint演習4(無コンソール)
 // あなたはこの演習を終了している、実行
 //    「NPM開始exercise.eslint.5」
 //    次の演習の上へ移動する

のconst {} RuleTester =必要(" eslint ' constのルール=必要(' ./no-console ' 

のconst ruleTester = 新しいruleTester()
ruleTester.run(' 無コンソール' ルール、{ 
  有効:[ 
    ' 情報()' ' コンソール' 'console.log ' ' console.baz()' 
    {コード:' console.warn()'オプション:[{allowedMethods:[ ' 警告' ]}]} 
  ]、
  無効:[ 
    無効(' にconsole.log ()' )、
    無効(' console.info()' )、
    無効(' console.warn()' 
  ] 
})
機能無効(コード){ リターン{ 
    コード、
    エラー:[{メッセージ:'

  コンソールを使用して、許可されていません' 、]} 
  } 
}

 

おすすめ

転載: www.cnblogs.com/Answer1215/p/12231422.html