werkint / webapp-bundle
Werkint Webapp Bundle
Requires
- php: >=5.5
- friendsofsymfony/rest-bundle: ~1.4
- ikimea/browser: *
- sensio/framework-extra-bundle: *
- symfony/framework-bundle: ~2.3
- symfony/twig-bundle: *
- twig/twig: ~1.14
- werkint/jsmin: *
- werkint/minifycss: *
- werkint/phpsass: *
Requires (Dev)
- twig/twig: *
This package is not auto-updated.
Last update: 2022-02-01 12:28:17 UTC
README
该Bundle在构建Symfony2应用程序时提供了更好的体验
脚本 = js/scss文件
简而言之,它允许:
- 基于模板名称自动加载脚本(例如,具有"template.twig"文件的"template.js"和"template.scss"将加载)。
- 直接将变量传递到脚本中(是的,甚至可以传递到SCSS中)。也支持数组和对象。
- 处理脚本:它们被压缩合并成单个文件。缓存有助于避免高负载。
- 智能浏览器缓存:您可以使用标签来区分缓存文件(例如,部分Git哈希)。虽然assetic强制您手动设置此标签,但Webapp会自动处理。
- SCSS混入的优点:文件在处理之前合并,因此您可以在某个地方定义变量、混入等,然后稍后使用。
- 脚本存储库:您可以创建包含依赖关系的脚本包。它们在composer.phar更新时自动更新。
配置Bundle
将Bundle添加到composer依赖项,然后添加此配置
werkint_webapp: respath: /res/cached # public path for cached Scripts resdir: %kernel.root_dir%/cache/scripts # directory for cached Scripts revpath: %kernel.root_dir%/cache/revision # tag file (for browser cache) scripts: %kernel.root_dir%/scripts # directory with downloaded packages
配置缓存文件标记
对于自动标记,应该有一个包含当前存储库标记的文件。在git钩子中更改此文件并存储提交哈希(符号链接或在此文件中引入.git/hooks)很方便。
#!/bin/bash DIR_CACHE=app/cache HASH=$(git rev-parse HEAD) REVISION_FILE="$DIR_CACHE/revision"
标记文件的路径存储在"werkint_webapp -> revpath"配置参数中。
连接到脚本存储库
存储库位于http://werkint.com/webapp-scripts/packages。有".packages"文件,其中包含可用的脚本列表,以及".hashes"文件,其中包含包哈希。每个包位于"{url}/packages/{package_name}"。文件列表存储在"{package_url}/.package.ini"中,文件哈希存储在"{package_url}/.hashes"中。
".package.ini"结构简单
[files] deps = jquery # dependencies files = file1.js,file1.scss # Scripts res = img1.gif # resources - files, # that are symlinked directly in the public path
如果存在资源目录,则将其压缩并作为存档下载,然后在本地目录中解压缩。例如,我们有"tiny_mce"资源 - 包含文件的目录,将在"/res/cached/tiny_mce/file.."中可用,不应进行处理(tinymce在运行时连接它们)。它在存储库中作为tiny_mce.zip存储,并在下载后解压缩。当Webapp在composer钩子中更新脚本时,它只检查存档哈希,因此可以节省时间。
首先,创建下载脚本的目录,例如"app/scripts"。然后设置此目录的路径并在根composer.json中更新钩子
{ ... "scripts": { "post-install-cmd": [ ... "Werkint\\Bundle\\WebappBundle\\Webapp\\ComposerScriptHandler::updateScripts" ], "post-update-cmd": [ ... "Werkint\\Bundle\\WebappBundle\\Webapp\\ComposerScriptHandler::updateScripts" ] }, "extra": { ... "werkint-webapp-scripts": "app/scripts" } }
现在,每次您调用composer update时,脚本都会更新;
注意,该库不支持IE<9、Firefox<4、Opera<12。