// 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()' ) ] }) 機能無効(コード){ リターン{ コード、 エラー:[{メッセージ:' コンソールを使用して、許可されていません' 、]} } }