Symfony2添加要为Dev Environment运行的命令

时间:2013-02-15 18:02:02

标签: php symfony

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

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

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

感谢。

3 个答案:

答案 0 :(得分:1)

如果您开始使用Symfony编译TypeScript,我会尝试使用event listener

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

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
    }
}

答案 1 :(得分:0)

不是每次都使用Symfony进行编译(慢),您可以设置grunt.js watch task来观察文件,然后在每次更改时编译。要做到这一点,您必须熟悉在开发系统上设置node.js。总而言之,我发现完全解耦客户端和服务器是一件好事。

答案 2 :(得分:0)

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

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