【问题标题】:How to run Grunt Build task by cliking on button through browser?如何通过浏览器单击按钮来运行 Grunt Build 任务?
【发布时间】:2013-12-03 05:09:50
【问题描述】:

我已经通过 grunt 进行了一个构建过程,它在命令提示符下运行良好。现在我有一个应用程序,我想通过单击构建按钮来运行此任务。

那么有什么方法可以通过编写任何 js 或 php 脚本从浏览器中运行 grunt 任务?

如果需要进一步澄清,请告诉我。 谢谢。

【问题讨论】:

    标签: javascript build gruntjs


    【解决方案1】:

    我看到两个选项:

    1. 服务器端脚本 - 例如 PHP、Python 等,用于启动您的任务。
    2. 一个使用原生库的浏览器插件 (Start an external application from a Google Chrome Extension?)。

    当然,选项一要容易得多。如果你只想在没有参数或任何东西的情况下运行它,你甚至不需要完整的 webstack。

    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 ...`;
    ?>
    

    这当然会等待 grunt 完成。所以你可以看看PHP的pcntl之类的。

    另一个想法,如果您使用像 supervisord 或 ramona 这样的具有基于 Web 的控制面板的东西,则向它们发送请求,以便它们可以启动 grunt 进程。

    所以上面的内容应该足以满足一个很小的用例,而不是那么灵活。对于更健壮、可扩展和认真的东西,请查看celery 和其他任务队列。例如,您可以使用flask 以及任务队列来获得一个非常强大的命令和控制中心。用 PHP 构建一个也应该不难。

    祝你好运。

    【讨论】:

    【解决方案2】:

    查看grunt-serve 插件。它似乎完全符合您的要求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      • 1970-01-01
      • 2020-12-07
      • 2012-01-23
      • 1970-01-01
      • 2012-06-04
      相关资源
      最近更新 更多