【问题标题】:Override JSHint Options by using the Grunt Command-Line使用 Grunt 命令行覆盖 JSHint 选项
【发布时间】:2015-09-29 15:58:10
【问题描述】:

通过调用

grunt jshint:path_to_file

我想覆盖默认的 JSHint 配置

grunt.initConfig({
  jshint: {
            options: {
              curly: true,
              eqeqeq: true,
              eqnull: true,
              browser: true,
              globals: {
                jQuery: true
              }
            },
            all: ['Gruntfile.js', 'Scripts/src/**/*.js']
        }

});

并且只包含那个特定的文件。 “grunt jshint path_to_file”也可以,但我不想使用

grunt jshint --file=filePath

grunt.option 函数,除非它可以满足我的需要。

这是否可以通过某种方式实现?

【问题讨论】:

  • 为什么要使用 grunt 而不是只运行 jshint filePath
  • 我们的项目要求只依赖 grunt 进行构建、测试等,以便将所有内容集中在一个地方。

标签: command-line parameters gruntjs overriding jshint


【解决方案1】:

grunt 的精神更多的是在 gruntfile 本身中对要使用的文件进行编码,而不是在命令行中指定它。 因此,我们需要有关您为什么要这样做的更多详细信息。我设想了两种可能性:

  • 您只想处理一个子组件:在这种情况下,您将为每个子组件声明不同的目标并从命令行调用目标:grunt jshint component1 在您的 Gruntfile 中:

    jshint: {
      component1: [filePath1],
      component2: [filePath2]
    }
    
  • 这是一个性能问题:您只想 jshint 一些文件,因为只有它们发生了变化。在这种情况下,结合 grunt-contrib-watch(在文件更改时运行 jshint)和 grunt-newer(仅在修改后的文件上运行)

【讨论】:

  • 感谢您迄今为止的意见,我同意这并不是真正的咕噜精神。我读到了 grunt watcher,但我们需要做的是在所有文件上运行 JSHint,这些文件稍后将被检入,而硬编码的 grunt 子集是不可能的。只有通过 JSHint 测试后才允许签入已修改的文件。如果真的没有办法像 grunt jshint 文件路径/子集那样指定它,我将不得不使用你提到的 watch 或更新的方法。
  • 我认为最好通过自动化一切来为您服务:在修改后的文件上自动运行 jshint(使用 watch + newer)并在所有文件上运行 jshint 作为预提交挂钩(如果您的源代码控制工具允许它)。这样一来,您的政策就会由您的工具执行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-07
相关资源
最近更新 更多