grunt смотреть изменения и перезапустить кофе

Я настраиваю Gruntfile, в котором пытаюсь:

  1. Скомпилируйте некоторые coffeescript в javascript для клиентской стороны.
  2. Следите за изменениями в coffeescript, который должен быть скомпилирован в javascript для клиентской части.
  3. Следите за изменениями в файлах coffeescript бэкэнда (сервера) и перезапускайте приложение coffee, когда изменения будут обнаружены.

У меня есть первые два шага, использующие это:

module.exports = (grunt) ->
  grunt.initConfig
    pkg: grunt.file.readJSON 'package.json'
    coffee:
      compile:
        expand: true
        flatten: true
        cwd: 'public/src'
        src: ['*.coffee']
        dest: 'public/dist'
        ext: '.js'
    watch:
      coffee:
        files: ['public/src/*.coffee']
        tasks: ['coffee']

  grunt.loadNpmTasks 'grunt-contrib-coffee'
  grunt.loadNpmTasks 'grunt-contrib-watch'
  grunt.registerTask 'default', ['coffee', 'watch']

Но я не уверен, как сделать третий шаг.

Структура каталогов в настоящее время выглядит следующим образом:

app
  lib.coffee
  routes.coffee
public/
  dist/
    client.js
  src/
    client.coffee
Gruntfile.coffee
package.json
server.coffee

Как я могу отслеживать изменения чего-либо в каталоге приложения или в файле server.coffee и автоматически запускать сервер (например, «coffee server.coffee») с помощью grunt?

Кроме того, сервер использует экспресс - нужно ли перезапускать приложение, чтобы увидеть, был ли снова доступен порт перед запуском?


person gratz    schedule 03.07.2014    source источник


Ответы (1)


Удалось заставить это работать в конце:

module.exports = (grunt) ->
  grunt.initConfig
    pkg: grunt.file.readJSON 'package.json'
    coffee:
      compile:
        expand: true
        flatten: true
        cwd: 'public/src'
        src: ['*.coffee']
        dest: 'public/dist'
        ext: '.js'
    watch:
      coffee:
        files: ['public/src/*.coffee']
        tasks: ['coffee']
      express:
        files: ['server.coffee']
        tasks: ['express:dev']
        options:
          spawn: false
    express:
      dev:
        options:
          script: 'server.coffee'
          opts: ['/path/to/coffee']
          #port: 8080

  grunt.loadNpmTasks 'grunt-contrib-coffee'
  grunt.loadNpmTasks 'grunt-contrib-watch'
  grunt.loadNpmTasks 'grunt-express-server'
  grunt.registerTask 'default', ['coffee', 'express:dev', 'watch']
person gratz    schedule 03.07.2014