如果每次页面在Dev环境中加载时,如何让Symfony2运行某些命令?
我们使用TypeScript,我已经构建了一个命令,它将获取我的所有TypeScript并进行编译。唯一的问题是,每次上传一些新代码时我都必须手动执行此操作,这会在调试时减慢速度(尽管这样做对我来说完全没问题)。
我希望每个页面加载时调用该命令(如果自上次编译后某些文件已经更改...我将构建所有逻辑)。我只需要知道我应该在哪里接触。
感谢。
答案 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使用原始文件和客户端实现。