我一直在考虑将资产管理/流水线工具(可能是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 (例如名为 的资产global-styles
)以重新编译它?
我对这里的替代品持开放态度。我查看了 grunt 并且很可能使用grunt-contrib-watch来处理文件监视,但我喜欢使用 Assetic 的想法,因为该项目是在 PHP 中的,我认为这对于在系统上工作的未来 PHP 开发人员来说会更容易可能对node.js不熟悉。似乎 grunt 采取了不同的方法,资产不一定要放在命名的捆绑包中。大多数情况下,我想了解命名资产包的概念方法(如 Assetic),因为它与我在源文件更改时重新编译资产的目标有关。