Запуск приложения node из grunt с часами

Итак, у меня есть файл grunt ниже. Я хочу добавить задачу, которая запустит приложение моего узла и будет следить за изменениями в каталоге и перезапускать. Я использую супервизора, node-dev (отлично), но я хочу запустить одну команду и запустить все приложение. Должен быть простой способ сделать это, но я просто скучаю по нему. Он также написан на coffeescript (не уверен, что это что-то меняет)...

module.exports = function(grunt) {
  grunt.initConfig({
    /*exec: {
        startApi: {
            command: "npm run-script start-api"
        }
    },*/
    //static server
    server: {
        port: 3333,
        base: './public',
        keepalive: true
    },

    // Coffee to JS compilation
    coffee: {
        compile: {
            files: {
                './public/js/*.js': './src/client/app/**/*.coffee'
            },
            options: {
                //basePath: 'app/scripts'
            }
        }
    },


    mochaTest: {
        all: ['test/**/*.*']
    },


    watch: {
        coffee: {
            files: './src/client/app/**/*.coffee',
            tasks: 'coffee'
        },
        mochaTest: {
            files: 'test/**/*.*',
            tasks: 'mochaTest'
        }
    }
});

grunt.loadNpmTasks('grunt-contrib-coffee');
grunt.loadNpmTasks('grunt-mocha-test');
//grunt.loadNpmTasks('grunt-exec');

grunt.registerTask( 'default', 'server coffee mochaTest watch' );
};

Как вы можете видеть в комментариях, я пробую grunt-exec, но команда node останавливает выполнение других задач.


person aheuermann    schedule 15.12.2012    source источник


Ответы (1)


Вы можете настроить grunt для запуска задачи по умолчанию и задачи наблюдения при запуске приложения узла:

в app.js

var cp = require('child_process');
var grunt = cp.spawn('grunt', ['--force', 'default', 'watch'])

grunt.stdout.on('data', function(data) {
    // relay output to console
    console.log("%s", data)
});

Затем просто запустите node app как обычно!

Кредит

person flynfish    schedule 09.01.2013
comment
Эй, у вас есть обновленная ссылка для этой ссылки? Я пытался найти его, но не повезло. также, вместо того, чтобы создавать дочерний процесс, не могли бы мы просто использовать grunt-exec для запуска приложения через супервизор? - person Leonidas; 05.03.2013
comment
Похоже, что этот блог сейчас не работает :/ У меня нет других ссылок на него. Что касается использования надзора, это может быть возможно, хотя я с этим не знаком. - person flynfish; 05.03.2013
comment
Спасибо. Что касается вашего примера, почему бы не запустить ваше приложение из Grunt, а не наоборот? Хотя я предполагаю, что таким образом вы можете использовать что-то вроде nodemon, который перезапустит ваш сервер всякий раз, когда будут изменения, а затем снова запустит grunt. - person Leonidas; 06.03.2013
comment
Теперь можно запустить приложение из Grunt на основе этого ответа. Кроме того, я нашел архив справочника - person flynfish; 06.03.2013