如何使用grunt-contrib-coffee避免多个帮助器实现,如__indexOf()

时间:2013-03-01 19:06:07

标签: javascript coffeescript gruntjs

我的Gruntfile.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; };

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

concat

如何让它识别出这些实现已经编译好了?

更新1

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

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

更新2

有一种解决方法,涉及使用{{1}}任务手动连接源文件。这需要一个临时文件,然后可以从CoffeeScript编译为JavaScript。它在grunt-contrib-coffee中提到。

将来,任务可以将他们的东西作为缓冲区传递给彼此(参见issue I created)。

1 个答案:

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