0

私はしようとしている Gruntfile を設定しています:

  1. クライアント側のいくつかのcoffeescriptをjavascriptにコンパイルします。
  2. クライアント側の javascript にコンパイルされる coffeescript への変更に注意してください。
  3. バックエンド (サーバー) の coffeescript ファイルへの変更を監視し、変更が見つかったらコーヒー アプリを再起動します。

これを使用して、最初の 2 つの手順を実行しました。

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']

しかし、3番目のステップを実行する方法がわかりません。

現在、ディレクトリ構造は次のようになっています。

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

app ディレクトリ内または server.coffee ファイルへの変更を監視し、grunt を使用してサーバー (「coffee server.coffee」など) を自動的に起動するにはどうすればよいですか?

また、サーバーはエクスプレスを使用します-アプリを再起動するには、開始する前にポートが再び利用可能かどうかを確認する必要がありますか?

4

1 に答える 1

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']
于 2014-07-03T14:02:50.337 に答える