@@ -71,6 +71,7 @@ Configuration
71
71
* `version_strategy `_
72
72
* `version `_
73
73
* `version_format `_
74
+ * `json_manifest_path `_
74
75
* `templating `_
75
76
* `hinclude_default_template `_
76
77
* :ref: `form <reference-templating-form >`
@@ -980,6 +981,7 @@ Each package can configure the following options:
980
981
* :ref: `version_strategy <reference-assets-version-strategy >`
981
982
* :ref: `version <reference-framework-assets-version >`
982
983
* :ref: `version_format <reference-assets-version-format >`
984
+ * :ref: `json_manifest_path <reference-assets-json-manifest-path >`
983
985
984
986
.. _reference-framework-assets-version :
985
987
.. _ref-framework-assets-version :
@@ -1054,7 +1056,7 @@ option.
1054
1056
1055
1057
.. note ::
1056
1058
1057
- This parameter cannot be set at the same time as ``version_strategy ``.
1059
+ This parameter cannot be set at the same time as ``version_strategy `` or `` json_manifest_path `` .
1058
1060
1059
1061
.. tip ::
1060
1062
@@ -1187,7 +1189,106 @@ individually for each asset package:
1187
1189
1188
1190
.. note ::
1189
1191
1190
- This parameter cannot be set at the same time as ``version ``.
1192
+ This parameter cannot be set at the same time as ``version `` or ``json_manifest_path ``.
1193
+
1194
+ .. _reference-assets-json-manifest-path :
1195
+ .. _reference-templating-json-manifest-path :
1196
+
1197
+ json_manifest_path
1198
+ ..................
1199
+
1200
+ **type **: ``string `` **default **: ``null ``
1201
+
1202
+ .. versionadded :: 3.3
1203
+
1204
+ The ``json_manifest_path `` option was introduced in Symfony 3.3.
1205
+
1206
+ The file path to a ``manifest.json `` file containing an associative array of asset
1207
+ names and their respective compiled names. A common cache-busting technique using
1208
+ a "manifest" file works by writing out assets with a "hash" appended to their
1209
+ file names (e.g. ``main.ae433f1cb.css ``) during a front-end compilation routine.
1210
+
1211
+ .. tip ::
1212
+
1213
+ Symfony's
1214
+ :ref: `Webpack Encore <frontend-webpack-encore >` supports
1215
+ :ref: `outputting hashed assets <encore-long-term-caching >`. Moreover, this can
1216
+ be incorporate this into many other workflows, including Webpack and Gulp using
1217
+ `webpack-manifest-plugin `_ and `gulp-rev `_, respectfully.
1218
+
1219
+ This option can be set globally for all assets and individually for each asset
1220
+ package:
1221
+
1222
+ .. configuration-block ::
1223
+
1224
+ .. code-block :: yaml
1225
+
1226
+ # app/config/config.yml
1227
+ framework :
1228
+ assets :
1229
+ # this manifest is applied to every asset (including packages)
1230
+ json_manifest_path : " %kernel.project_dir%/web/assets/manifest.json"
1231
+ packages :
1232
+ foo_package :
1233
+ # this package uses its own manifest (the default file is ignored)
1234
+ json_manifest_path : " %kernel.project_dir%/web/assets/a_different_manifest.json"
1235
+ bar_package :
1236
+ # this package uses the global manifest (the default file is used)
1237
+ base_path : ' /images'
1238
+
1239
+ .. code-block :: xml
1240
+
1241
+ <!-- app/config/config.xml -->
1242
+ <?xml version =" 1.0" encoding =" UTF-8" ?>
1243
+ <container xmlns =" http://symfony.com/schema/dic/services"
1244
+ xmlns : xsi =" http://www.w3.org/2001/XMLSchema-instance"
1245
+ xmlns : framework =" http://symfony.com/schema/dic/symfony"
1246
+ xsi : schemaLocation =" http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd
1247
+ http://symfony.com/schema/dic/symfony http://symfony.com/schema/dic/symfony/symfony-1.0.xsd" >
1248
+
1249
+ <framework : config >
1250
+ <framework : assets json_manifest_path =" %kernel.project_dir%/web/assets/manifest.json" >
1251
+ <!-- this package removes the manifest (the file will not apply) -->
1252
+ <framework : package
1253
+ name =" foo_package"
1254
+ json_manifest_path =" %kernel.project_dir%/web/assets/a_different_manifest.json" />
1255
+ <!-- this package uses the global manifest (the default file is used) -->
1256
+ <framework : package
1257
+ name =" bar_package"
1258
+ base_path =" /images" />
1259
+ </framework : assets >
1260
+ </framework : config >
1261
+ </container >
1262
+
1263
+ .. code-block :: php
1264
+
1265
+ // app/config/config.php
1266
+ $container->loadFromExtension('framework', array(
1267
+ 'assets' => array(
1268
+ 'json_manifest_path' => '%kernel.project_dir%/web/assets/manifest.json',
1269
+ 'packages' => array(
1270
+ 'foo_package' => array(
1271
+ // this package uses its own manifest (the default file is ignored)
1272
+ 'json_manifest_path' => '%kernel.project_dir%/web/assets/a_different_manifest.json',
1273
+ ),
1274
+ 'bar_package' => array(
1275
+ // this package uses the global manifest (the default file is used)
1276
+ 'json_manifest_path' => '/images',
1277
+ ),
1278
+ ),
1279
+ ),
1280
+ ));
1281
+
1282
+ .. note ::
1283
+
1284
+ This parameter cannot be set at the same time as ``version `` or ``version_strategy ``.
1285
+ Additionally, this option cannot be nullified at the package scope if a global manifest
1286
+ file is specified.
1287
+
1288
+ .. tip ::
1289
+
1290
+ If you request an asset that is *not found * in the ``manifest.json `` file, the original -
1291
+ *unmodified * - asset path will be returned.
1191
1292
1192
1293
templating
1193
1294
~~~~~~~~~~
@@ -1901,3 +2002,5 @@ Full Default Configuration
1901
2002
.. _`PhpStormProtocol` : https://github.com/aik099/PhpStormProtocol
1902
2003
.. _`phpstorm-url-handler` : https://github.com/sanduhrs/phpstorm-url-handler
1903
2004
.. _`blue/green deployment` : http://martinfowler.com/bliki/BlueGreenDeployment.html
2005
+ .. _`gulp-rev` : https://www.npmjs.com/package/gulp-rev
2006
+ .. _`webpack-manifest-plugin` : https://www.npmjs.com/package/webpack-manifest-plugin
0 commit comments