学知不足业精于勤 2020-01-23
// eslint exercise 1 (no-console)
// When you‘re finished with this exercise, run
// "npm start exercise.eslint.2"
// to move on to the next exercise
module.exports = {
create(context) {
return {
CallExpression(node) {
if (hasIdentifierObjectAsConsole(node) && hasPropertyWithInvalidMethods(node)) {
context.report({
node,
message: ‘Using console is not allowed‘,
})
}
},
}
},
}
function hasPropertyWithInvalidMethods (node) {
return (
node.callee.property &&
[‘warn‘, ‘log‘, ‘info‘].includes(node.callee.property.name)
)
}
function hasIdentifierObjectAsConsole(node) {
return node.callee.object &&
node.callee.object.type === "Identifier" &&
node.callee.object.name === "console";
}// eslint exercise 1 (no-console)
// When you‘re finished with this exercise, run
// "npm start exercise.eslint.2"
// to move on to the next exercise
const {RuleTester} = require(‘eslint‘)
const rule = require(‘./no-console‘)
const ruleTester = new RuleTester()
ruleTester.run(‘no-console‘, rule, {
valid: [‘info()‘, ‘console‘, ‘console.log‘, ‘console.baz()‘],
invalid: [
invalid(‘console.log()‘),
invalid(‘console.info()‘),
invalid(‘console.warn()‘),
],
})
function invalid(code) {
return {
code,
errors: [{message: ‘Using console is not allowed‘}],
}
}