2013-10-10 7 views
5

Недавно я полюбил Gruntjs и с радостью выбрасывал каждую возможность, чтобы сделать мою жизнь в развитии намного проще. В настоящее время я собираю его файлы SASS, часы работы и использование nodemon, чтобы обновлять мой сервер узлов, когда я работаю над этим приложением.Gruntjs - Выполнение нескольких задач блокировки в определенном порядке (Mongo & Node.js)

Так вот, где я провел утро, забирая себе орехи. Я хотел бы запустить MongoDB до запуска приложения Node. В настройке приложения Node я проверяю любые значения в базах данных, а если он пуст, то вытащите тестовый файл, полный информации в таблицы.

В настоящее время я пытался использовать grunt-concurrent и grunt-shell-spawn для выполнения необходимых команд mongo и node.

grunt.initConfig({ 
    shell: { 
    mongo: { 
     command: 'mongo' 
    }, 
    node: { 
     command: 'node app.js' 
    } 
    }, 
    concurrent: { 
    dev: { 
     tasks: ['shell:mongo','shell:node'], 
     options: { logConcurrentOutput: true } 
    } 
    } 
}); 
grunt.loadNpmTasks('grunt-concurrent'); 
grunt.loadNpmTasks('grunt-shell-spawn'); 

Есть ли способ, чтобы убедиться, что команда Монго достигает это «блокирование» состояние перед выполнением задачи узел? Я предполагаю, что это можно сделать, запустив задачу async узла в функции setTimeout, но я не хочу постоянно ждать, чтобы изменения в процессе разработки вступили в силу. В настоящее время я сохраняю отдельную вкладку оболочки, открытую для базы данных, и мне бы очень хотелось интегрировать ее в Grunt, чтобы сохранить все в одном месте.

Я не уверен в его значимости в широких масштабах, но любой, кто использует Node.js и MongoDB, действительно найдет это полезным.

Благодаря

ответ

-2

Вы можете интервальные проверить сервисный порт MongoDB, чтобы увидеть, если она доступна \

+0

Пожалуйста, попробуйте прочитать это http://stackoverflow.com/about, чтобы узнать больше о вопросах/ответах здесь, на SO. Ваш вклад не отвечает на этот вопрос. Это больше комментарий, который вы можете добавить, как только вы увеличите свою репутацию: http://stackoverflow.com/faq#reputation –

0

Попытки использования чернового-nodemon с оболочкой: Монго при задании «опции: {асинхронные: истинно}»

concurrent: { 
     tasks: ['shell', 'nodemon'], 
     options: { 
      logConcurrentOutput: true 
     } 
    }, 
    shell: { 
     mongo: { 
      command: 'mongod', 
      options: { 
       async: true 
      } 
     } 
    }, 
nodemon: { 
     dev: { 
      script: "server.js", 
     } 
    } 

Это сработало для меня.

+1

Nodemon - отличный инструмент для управления настройкой узла Node, но это действительно не было пункт этого вопроса. У вас есть пример теста, в котором shell: mongo достигает своего состояния блокировки _every time_ до запуска nodemon? Опция async не гарантирует этого. –

Смежные вопросы