javascript - 从 Coffeescript 生成的 Javascript 没有 lint 准备好? -> 在 Yeoman/Grunt 中引发 Lint 错误

原文 标签 javascript coffeescript gruntjs yeoman

目前我正在尝试改进构建网络应用程序的工作流程。
安装 Yeoman 后,命令“grunt”为我提供了一种组合和缩小我的 javascript 文件的好方法。
我的 main.js 文件是从很多 CoffeeScript 文件中生成的,我之前是手动完成的。由于文件依赖性,我不使用编译coffeescript的集成方式。 (还行吧)

但问题是:
当我现在尝试运行“grunt”时,它会给我生成的 js 文件中的“lint”错误,例如:

line 3   col 3    Missing "use strict" statement.
line 3   col 3    Expected 'var' to have an indentation at 5 instead at 3.
line 4   col 102  Expected '{' and instead saw 'child'.
line 4   col 233  A constructor name should start with an uppercase letter.

Warning: Task "jshint:all" failed. Use --force to continue.

如果我 --force 它继续,输出 dest 文件夹中的 main.js 仍然是空的

我能做什么? 我认为编译后的 CoffeeScript 是“lint ready”的javascript?

要编译我的 CoffeeScript 文件,我使用“rehab”:
https://www.npmjs.org/package/rehab

它为我提供了这个 Cakefile:
{exec, spawn} = require 'child_process'
Rehab = require 'rehab'

build = ->
      console.log "Building project from src/*.coffee to app/scripts/main.js"

      files = new Rehab().process 'src'
      files = files.join " "

      join_to_single_file = "--join app/scripts/main.js"
      compile_from_files = "--compile #{files}"

      exec "coffee #{join_to_single_file} #{compile_from_files}", (err, stdout, stderr) ->
        throw err if err

task 'build', 'Build coffee2js using Rehab', sbuild = ->
  build()

更新:

如果我理解正确,我的 main.js 文件将永远不会通过 jshint,所以我必须从 yeoman/grunt 中删除检查才能更进一步?我从 gruntfile.js 中删除了这一行:
// Make sure code styles are up to par and there are no obvious mistakes
    jshint: {
        options: {
            jshintrc: '.jshintrc',
            reporter: require('jshint-stylish')
        },
        all: [
            'Gruntfile.js',
          // removed  '<%= yeoman.app %>/scripts/{,*/}*.js',
            '!<%= yeoman.app %>/scripts/vendor/*',
            'test/spec/{,*/}*.js'
        ]
    },

现在如果运行“grunt”我没有错误,但我在 dest 文件夹中的输出仍然包含一个空的 main.js :(

最佳答案

我认为 Coffeescript 团队并不关心其生成的代码是否通过 jslint。 (或者他们曾经,但那个时候已经过去了)。见 JavaScript Lint warnings caused by default argument values Coffeescript Github 存储库中的错误。

您可以使用 coffeelint检查您的代码(甚至还有 Grunt module )。

但是,Coffeelint 会检查几件事,但如果您期望进行 jslint 样式检查,则会错过一些您可能期望的事情。 (Coffeelint 更像是一个风格检查器)。

在一个大型的 Coffeescript 项目中,我已经开始同时使用 coffeelint coffee-jshint . js*hint* 对 Javascript 风格做出了更务实的选择(并且有一个更简单的界面来关闭所有内容),这与 Coffeescript 生成的 Javascript 更加相得益彰。 coffee-jshint 包将正确的参数传递给 jshint,以免对机器生成的代码过于严格。

关于javascript - 从 Coffeescript 生成的 Javascript 没有 lint 准备好? -> 在 Yeoman/Grunt 中引发 Lint 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22133431/

相关文章:

javascript - 使用wordpress acf水平滚动到

javascript - WebGL-设置多个顶点

Javascript document.cookie = "key=value"追加而不是替换

javascript - 用于谷歌浏览器扩展的 Facebook JavaScript API

javascript - 是否可以在一个存储库中为多个项目创建一个 node_module 文件夹?

coffeescript - 从字符串中的类名实例化 CoffeeScript 类

javascript - 将 should.js 与 Coffeescript 结合使用

node.js - Node/Busboy : get file size

javascript - Grunt 发行版不包括 node_modules

angularjs - 如何为 grunt build设置 <base> 元素?