3

我有一个像这样Gruntfile.coffeegrunt-contrib-coffee配置:

coffee:
  compile:
    files:
      'public/assets/application.js': [
          'multiple/files' #, ...
      ]
    options:
      bare: true

问题是,它生成了多个辅助方法的实现,例如

    var __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };

如何让它认识到这些实现已经编译?

更新 1

原因显然是编译后的 JavaScript 在编译会被连接起来。如果在编译之前将 CoffeeScript 连接起来,则可以避免这种情况。如果这不是我缺少的grunt-contrib-coffee的配置选项,我将在 github 上提交问题。

所以剩下的问题是:如何在编译之前连接 CoffeeScript,以避免多个助手实现?

更新 2

有一种解决方法,它涉及将源文件与concat任务手动连接。这需要一个临时文件,然后可以将其从 CoffeeScript 编译为 JavaScript。我创建的问题中提到了它。

将来,任务将能够将它们的东西作为缓冲区传递给彼此(参见问题)。

4

1 回答 1

1

从 grunt-contrib-coffee-0.6.1 开始,这适用于以下join选项:

coffee:
  compile:
    files:
      'public/assets/application.js': [
          'multiple/files' #, ...
      ]
    options:
      bare: true
      join: true # concatenate coffee files before compiling. default is false
于 2013-03-18T16:31:32.293 回答