我一直在研究将资产管理/流水线工具(可能是Assetic)合并到我的PHP项目中。
由于可以使用此类工具将资产分组到集合或基于通配符的路径中,如果我想设置一个仅重新编译/缩小已更改的源文件的监视进程,那么在给定资产的情况下我该怎么做?必须按姓名查询(见下面的例子)?
(我注意到Symfony有一个Assetic的监视任务,但我不确定它只重新编译已更改的文件,而且我必须让它在Symfony之外工作,因为我的应用程序使用了CodeIgniter框架。)
在Assetic中,您可以创建基于通配符的资产,例如:
new GlobAsset('/path/to/compass-sources/*')
您可以告诉它通过过滤器发送资产(本例中为Compass),然后将结果(CSS)输出到public/css
等文件夹。
假设我使用node.js的fs.watch
设置监视进程,这样理论上我可以告诉Assetic在其源文件发生变化时重新编译特定资产。
由于我的node.js脚本只知道更改的实际文件的名称(例如compass-sources/layout.scss
),我怎样才能查找该特定文件所属的AssetCollection或GlobAsset(比如名为{{的资产) 1}})为了重新编译它?
我愿意接受替代方案。我看着grunt,可能很好地使用grunt-contrib-watch来处理文件,但我喜欢使用Assetic的想法,因为该项目是在PHP中,我认为对未来的PHP开发人员来说,这将更容易在系统上工作可能不熟悉node.js.似乎grunt采取了一种不同的方法,资产不一定在命名包中。大多数情况下,我想了解命名资产包的概念方法(如在Assetic中),因为它与我在源文件发生变化时重新编译资产的目标有关。