【问题标题】:jshint grunt exported optionsjshint grunt 导出的选项
【发布时间】:2013-06-04 21:32:19
【问题描述】:

您好,我正在努力实现以下目标。我正在使用 grunt 进行 jshint 验证。

在我使用过的文件中的某处:

var logger = function () {
 // some ode
}

因为 logger 从未实际使用过,所以 jshint 正确地向我显示了以下错误。

W098: 'logger' is defined but never used.

我可以将未使用的设置为 false,它会完美运行。但我实际上希望该选项发生在其他文件中并警告我未使用的变量。所以未使用的选项对我不起作用。

我还看到我可以使用这样的内联注释: * 导出的 EXPORTED_LIB */

但我实际上更愿意避免使用此类 cmets 将我的文件弄得一团糟。有没有机会我可以在我的 grunt 文件中指定导出的选项,例如全局变量。

这是我的 gruntfile 的 jshint 部分:

jshint: {
        // global options
        options: {
            camelcase: true,
            curly: true,
            eqeqeq: true,
            forin: true,
            immed: true,
            indent: 4,
            latedef: true,
            newcap: true,
            noarg: true,
            nonew: true,
            plusplus: false,
            quotmark: 'single',
            undef: true,
            unused: true,
            strict: true,
            maxparams: 4,
            maxdepth: 4,
            trailing: true,
            maxlen: 120,
            browser: true,
            node: true
        },
        server_logger: {
            src: [BASE_PATH_SERVER_LOGGER, '/**/*.js'].join(''),
            options: {
                browser: false
            }
        },
        client_logger: {
            src: [BASE_PATH_CLIENT_LOGGER, '/**/*.js'].join(''),
            options: {
                node: false,
                devel: true
            }

        }
    }

感谢您的宝贵时间。

最好的问候 播放器wtf

更新:我在 jshint github 存储库 here987654321@ 上提出了问题

【问题讨论】:

    标签: gruntjs jshint


    【解决方案1】:

    这是最近修复的,现在可以正常工作了。

    github-issue

    作为一个例子,我在我的 gruntfile 中这样使用它

    client_logger: {
        expand: true,
        cwd: BASE_PATH_CLIENT_LOGGER,
        src: '**/*.js',
        options: {
            node: false,
            devel: true,
            globals: {
                logger: true,
                expect: true,
                it: true,
                describe: true,
                beforeEach: true,
                afterEach: true
            },
            exported: ['logger']
        }
    }
    

    但是 npm 模块还没有更新。如果你想让它工作,你必须手动从 jshint github 存储库中复制最新版本并替换当前模块中的那个,或者等到它更新。

    【讨论】:

      【解决方案2】:

      我认为你可以在你的 src 文件中排除文件,所以你可以从你的基本 linting 中排除你的记录器文件(我想这里的记录器文件是 logger.js),并用未使用标志单独地对记录器文件进行 lint关掉。

      阅读更多关于here -> "! 在模式开头将否定匹配"

      您可以设置 cwd(并保留加入内容)。在文档中查看更多信息:Building the files object dynamically

      jshint: {
          // global options
          options: {
              ... your global options here
          },
          server_logger: {
              options: {
                  browser: false
              },
              files: [{
                cwd: BASE_PATH_SERVER_LOGGER,
                src: ['/**/*.js', '!logger.js']
              }]
          },
          client_logger: {
              options: {
                  node: false,
                  devel: true
              },
              files: [{
                cwd: BASE_PATH_CLIENT_LOGGER,
                src: ['/**/*.js', '!logger.js']
              }]
          },
          lint_logger: {
              options: {
                  unused: false
              },
              files: [{
                src: ['logger.js']
              }]
          }
      }
      

      不是 100% 确定这是否有效,但我认为它至少应该引导您走向正确的方向。如果您需要指定路径而不仅仅是要排除的文件,您可以将记录器文件放在单独的文件夹中,然后排除该文件夹!

      【讨论】:

      • 您好,感谢您的回复。我对 cwd 并不陌生,谢谢。尽管我很确定您的解决方案应该可以工作,但它不是很优雅。我正在考虑与您提到的相同,但我认为我将拥有越来越多的文件,例如 logger.js,我不喜欢单独指定所有这些文件。但我将不得不看看是否有替代方案。我真的很希望有一个像exported:{//exported variables}这样的选项,因为它适用于全局
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多