有没有办法用eslint lint特定的变量名称

时间:2016-08-23 16:26:36

标签: javascript ecmascript-6 lint eslint

例如,我想删除一个特定的变量名,如$ abc或' $ abc',如果它存在于任何地方,我们将抛出一个linting错误。它专门用于es6代码或只是javascript代码。

我怎么能在这种情况下做到这一点?可能吗?

如果它不是替代方案,我可以检查一下,不会污染我的代码库吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:-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
      }
    }
  });
};