3

如何让 Symfony2 在 Dev 环境中每次加载页面时运行某些命令?

我们使用 TypeScript,我已经构建了一个命令,它将获取我所有的 TypeScript 并编译它。唯一的问题是,每次我上传一些新代码时我都必须手动执行此操作,这会在调试时减慢速度(尽管我在生产环境中这样做非常好)。

我希望它在每次页面加载时调用该命令(如果某些文件自上次编译后发生了更改......我将构建所有逻辑)。我只需要知道我应该挂在哪里。

谢谢。

4

3 回答 3

1

如果您打算使用 Symfony 编译您的 TypeScript,我会尝试使用事件监听器

您可以尝试这样的事情(未经测试):

向文件中添加服务,config_dev.yml以便监听器仅在开发环境中运行

# app/config/config_dev.yml 
services:        
      compileTypeScript:
        class: myApp\TypescriptBundle\Controller\TypescriptComiler
        tags:
            - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest, priority: 64 }

我不确定优先级是如何工作的,但 64 似乎达到了我的最佳选择。

创建上面引用的类并添加代码以编译 TypeScript。

//Class
class TypescriptCompiler extends controller
{
    public function onKernelRequest(GetResponseEvent $event)
    {       
        // compile your TypeScript here
    }
}
于 2013-02-15T18:59:33.353 回答
0

与其每次都使用 Symfony 编译(慢),不如设置一个grunt.js 监视任务来监视文件,然后在每次发生更改时编译。为此,您必须熟悉在开发系统上设置node.js。总而言之,我觉得将客户端和服务器完全解耦是一种不错的选择。

于 2013-02-15T19:33:28.353 回答
0

我们正在考虑在进行产品部署时触发 grunt - 以执行优化。

Dev 使用原始文件和客户端实现。

于 2013-03-19T16:44:22.217 回答