2013-12-03 2 views
1

Я сделал один процесс сборки через grunt, и он отлично работает из командной строки. Теперь у меня есть приложение, из которого я хочу запустить эту задачу, нажав кнопку «Создать».Как запустить задачу Grunt Build, нажав кнопку на браузере?

Итак, есть ли способ, которым я могу запустить задачу grunt из браузера, написав любой скрипт js или php?

Если какие-либо дополнительные разъяснения необходимы, дайте мне знать. Спасибо.

ответ

0

Я вижу два варианта:

  1. Серверный скрипт - как PHP, Python и т.д., который запускает свою задачу.
  2. Плагин для браузера, который использует собственные библиотеки (Start an external application from a Google Chrome Extension?).

Вариант один, конечно, намного проще. И вам даже не нужен полный веб-стол, если вы просто хотите запустить его без аргументов или чего-то еще.

Python может быть столь же просто, как:

import socket 
import subprocess 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM); 
s.bind(('0.0.0.0', 17777)) 
s.listen() 

while True: 
    connection, client_address = soc.accept(); 
    connection.send('HTTP/1.1 200 OK\r\n\r\n') 
    subprocess.call(['grunt', '..']) 
    connection.close() 

Тогда просто ударил его, как <a href="host:17777">run</a> или XHR.

Для более экзотических вещей, таких как отчет о состоянии, аргументы и т. Д., Вам понадобится нечто более сложное. Если у вас уже есть PHP на основе стека, вы можете просто сделать что-то вроде:

<?php 
    echo `grunt ...`; 
?> 

Это, конечно ждать ворчание до конца. Таким образом, вы можете посмотреть на PHP pcntl и тому подобное.

Другая идея, если вы используете что-то вроде supervisord или ramona, которые имеют веб-панели управления, заключается в том, чтобы отправлять запросы им, чтобы они могли начать процесс хрюкания.

Таким образом, вышеизложенного должно быть достаточно для крошечного прецедента, не столь гибкого. Для чего-то более прочного, расширяемого и серьезного взгляда на celery и других очередей задач. Вы можете получить довольно мощный центр управления и управления, используя flask, например, вместе с очередью задач. Построение одного в PHP тоже не должно быть существенно затруднительным.

Удачи.

+0

Спасибо. это делается с помощью < ' –

+0

Обратите внимание, что обратными являются операторы выполнения в PHP. http://php.net/manual/en/language.operators.execution.php – soulseekah

0

Проверьте плагин grunt-serve. Кажется, что вы делаете именно то, что вам нужно.

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