2016-08-23 8 views
2

Например, я хочу исключить конкретное имя переменной, например $ abc или '$ abc', если оно существует где угодно, мы будем бросать ошибку линтирования. Его специально для кода es6 или просто кода javascript.есть способ перетащить определенное имя переменной с помощью eslint

Как я могу это сделать в eslint? это возможно?

Если это не то, что является альтернативой, я могу сделать, чтобы проверить, не загрязняет ли мой код базой?

+0

[? Что вы устали] (http://stackoverflow.com/help/ как вы спрашиваете). Вы посмотрели документы для [«Работа с правилами»] (http://eslint.org/docs/developer-guide/working-with-rules)? – gfullam

+1

Я хотел бы познакомить вас с моим другом [grep] (http://linux.die.net/man/1/egrep) ... – ssube

+0

@gfullam Я попытался разобраться с этой конкретной темой в Интернете, до сих пор я использовал стандартные настраиваемые правила, но я не нашел тот, который каким-то образом соответствует имени настраиваемой переменной. – Ezeewei

ответ

-1

Вы можете пройти кодовую базу и проверить все файлы на наличие переменной, которую вы хотите устранить. Это, возможно, немного тяжеловес для того, что вам нужно, но это может быть вариант.

Что-то вроде этого должно сделать трюк. Вам придется заменить $ bad_variable_name тем, что имеет ваша фактическая переменная . Вы также должны сделать что-то, чтобы сделать ваш билд неудачу (при желании)

var fs = require('fs'); 
var checkDir = (dir) => { 
    var files = fs.readdirSync(dir); 
    files.forEach((file) => { 
    var path = dir + '/' + file; 
    var stat = fs.statSync(path); 
    if (stat && stat.isDirectory()) { 
     checkDir(path); 
    } else { 
     if(path.endsWith('this-file.js')){ //the file where this code is 
     return; 
     } 
     var fileContents = fs.readFileSync(path); 
     if(fileContents.indexOf('$bad_variable_name') > -1){ 
     console.log('$bad_variable_name found in ' + path);     
     //do something here to fail your build 
     } 
    } 
    }); 
}; 
+0

гул ... мы можем переместить эту вещь в eslint ??? это будет УДИВИТЕЛЬНО! – Ezeewei

5

Вы можете создать your own eslint rule, как указано в комментариях. Вот небольшой пример, который передает все идентификаторы (за исключением имен свойств) с именем foo:

export default function(context) { 
    return { 
    Identifier(node) { 
     if (
     node.name === 'foo' && 
     (
      node.parent.type !== 'MemberExpression' || 
      node.parent.computed || 
      node.parent.object === node 
     ) 
    ) { 
     context.report(node, 'Do not use the variable name "foo"'); 
     } 
    } 
    }; 
}; 

Живой пример: http://astexplorer.net/#/Lmzgbm2iRq