0

/assets/src/coffeeetc(./child/paths等等)中有许多咖啡源文件,我想将它们输出到assets/js/and assets/js/child/paths

看起来我已经接近了,但它不起作用。使用grunt-contrib-coffeegrunt-contrib-watch

grunt.initConfig
watch:
  coffee:
    files: '<%= coffee.src %>',
    tasks: 'coffee:dev'
    options:
      nospawn: true

coffee:
  src: 'assets/src/coffee/**/*.coffee'
  dev:
    options:
      sourceMap: true
    files: [
      expand: true
      cwd: "assets/"
      src: "/src/coffee/**/*.coffee"
      dest: "../js/"
      ext: ".js"
    ]

grunt.loadNpmTasks "grunt-contrib-coffee"
grunt.loadNpmTasks 'grunt-contrib-watch' 
# Default task.
grunt.registerTask "default", "watch"

grunt.event.on('watch', (action, filepath) ->
(grunt.log.writeln('\n'+ filepath + ' has ' + action))

dest = "#{path.dirname(filepath.replace("src/coffee", "js"))}"

grunt.config(['coffee', 'dev', 'files', 'src'], [filepath])
grunt.config(['coffee', 'dev', 'files', 'dest'], [dest])

(grunt.log.writeln("src: #{grunt.config(['coffee', 'dev', 'files', 'src'])}"))
(grunt.log.writeln("dest: #{grunt.config(['coffee', 'dev', 'files', 'dest'])}"))

)

好的,所以它的输出看起来像:

assets/src/coffee/projAlpha/dl.coffee has changed    
src: assets/src/coffee/projAlpha/dl.coffee    
dest: assets/js/projAlpha/dl.coffee

但该文件实际上最终是:assets/src/coffee/projAlpha/dl.coffee...而且它是咖啡脚本。它应该在assets/js/projAlpha/dl.js.

我已经获得了 grunt coffee 实用程序来一次编译所有文件并将它们放在正确的位置。不过,我宁愿他们一次编译一个,因为我现在有几个文件并且一直在添加更多文件。

4

1 回答 1

0

在您的 glob-pattern 文件路径配置中,我注意到 2 个问题:

  1. glob-pattern 选项不在“files”键下,而是直接在 options 键下。
  2. CWD 仅适用于 src 文件。dest 目录不使用 cwd,因此您必须从基本目录(您的 Gruntfile 所在的位置)指定完整路径。

dev:
  options:
    sourceMap: true
  expand: true
  cwd: "assets/src/coffee/"
  src: "**/*.coffee"
  dest: "assets/js/"
  ext: ".js"

例如,这将移动assets/src/coffee/User/controller.coffeeassets/js/User/controller.js

于 2013-04-25T05:48:25.580 回答