zenstruck / asset-manifest-bundle
v1.2.0
2016-12-22 21:33 UTC
Requires
- symfony/asset: ^2.8|^3.0
- symfony/framework-bundle: ^2.8|^3.0
- symfony/twig-bundle: ^2.8|^3.0
- twig/twig: ^1.26|^2.0
Requires (Dev)
- symfony/browser-kit: ^2.8|^3.0
- symfony/css-selector: ^2.8|^3.0
- symfony/finder: ^2.8|^3.0
This package is not auto-updated.
Last update: 2022-02-01 12:57:36 UTC
README
注意:此捆绑包的功能现在已在 Symfony 核心中。
ZenstruckAssetManifestBundle
此捆绑包添加了twig函数manifest_asset
,这是一个对原生asset
的包装,但会查找配置的manifest json文件以映射资产。此文件可以使用 Gulp 和 gulp-rev Gulp 插件生成。如果您已使用 Laravel 与 Laravel Elixir,则 manifest_asset
函数类似于Laravel的 elixir
函数。
安装
下载
composer require zenstruck/asset-manifest-bundle
启用捆绑包
//app/AppKernel.php //... public function registerBundles() { $bundles = [ //... new Zenstruck\AssetManifestBundle\ZenstruckAssetManifestBundle(), //... ]; //... } //...
配置
默认情况下,未配置清单。在开发中,这可能很理想。对于生产,您将需要配置一个映射资产的清单文件。
#app/config/config_prod.yml #... zenstruck_asset_manifest: manifest_file: "%kernel.root_dir%/../web/assets/manifest.json" #...
用法
在twig文件中,应将asset
替换为manifest_asset
。
以下是一个示例
<!DOCTYPE html> <html> <head> <title>My page title</title> <meta charset="utf-8"> <link rel="stylesheet" href="{{ manifest_asset('assets/main.css') }}"> </head> <body> My page content </body> </html>
注意:如果没有配置清单文件,manifest_asset
的行为与原生asset
函数完全相同。
前缀
假设您的公共(网络)文件夹如下所示
.
├── assets
│ ├── build
│ │ ├── css
│ │ │ └── app-8f07f52635.css
│ │ └── rev-manifest.json
│ └── css
│ └── app.css
并且您的rev-manifest.json
文件如下所示
{ "css/app.css": "css/app-8f07f52635.css" }
使用manifest_asset
twig函数,您将传递assets/css/app.css
,但这不会正确映射。为了修复此问题,您可以在config.yml
中添加前缀。
zenstruck_asset_manifest: manifest_file: "%kernel.root_dir%/../web/assets/build/manifest.json" prefix: source: assets/ destination: assets/build/
现在,assets/css/app.css
将正确映射到assets/build/css/app-8f07f52635.css
。
完整的默认配置
zenstruck_asset_manifest: manifest_file: ~ prefix: source: ~ destination: ~