Add tito10047/progressive-image-bundle 2.0 (#2027)

* Add tito10047/progressive-image-bundle 2.0

Registers the bundle, its route, and a working default config (a chain
resolver with an AssetMapper + filesystem fallback, tailwind grid
breakpoints, sync generation, and a self-contained local Flysystem
variant store — no extra dependency required). The responsive
breakpoint stylesheet is generated and imported into assets/app.js
automatically via a post-install script, so the bundle renders
correctly right after "composer require" with zero manual config.

Verified end-to-end against a sandboxed copy of a real AssetMapper app:
uninstall -> reinstall -> render <twig:pgi:Image> produces a working
<picture> element with real generated variant files on disk.

* Fix recipes-contrib QA failures for tito10047/progressive-image-bundle 2.0

- add-lines only supports "top", "bottom", "after_target" as a position
  value — "before_target" isn't valid. Insertion order relative to the
  app.css import doesn't matter functionally, so switch to after_target.
- post-install.txt was missing its trailing newline.

* Retrigger CI: tito10047/progressive-image-bundle main/v2.0 branches now include the AssetMapper prepend() fix

* Retrigger CI: asset_mapper resolver fix is live on main/v2.0 (progressive-image-bundle)

* Retrigger CI: 2.0.0-rc0 (pre-fix) tag deleted, only 2.0.0-rc1 remains
This commit is contained in:
Jozef Môstka
2026-08-19 15:52:32 +04:00
committed by GitHub
parent d10e49cd4e
commit 8b25c5c62c
4 changed files with 77 additions and 0 deletions
@@ -0,0 +1,40 @@
# Documentation: https://pgi.blue/guide/getting-started
progressive_image:
resolvers:
default:
type: chain
# If your project does NOT use Symfony UX AssetMapper (e.g. Webpack Encore),
# remove "asset_mapper_resolver" below and from this chain.
resolvers: ['asset_mapper_resolver', 'filesystem_resolver']
asset_mapper_resolver:
type: asset_mapper
filesystem_resolver:
type: filesystem
roots: ['%kernel.project_dir%/public']
allowUnresolvable: true
responsive_strategy:
grid:
framework: tailwind # or bootstrap, or custom
ratios:
landscape: '16/9'
portrait: '3/4'
square: '1/1'
generation:
# Switch to "async" once you've wired up a Messenger transport for it.
strategy: sync
variant_store:
storage: progressive_image.variant_storage
services:
progressive_image.variant_storage.adapter:
class: League\Flysystem\Local\LocalFilesystemAdapter
arguments:
- '%kernel.project_dir%/public/media/pgi'
progressive_image.variant_storage:
class: League\Flysystem\Filesystem
arguments:
- '@progressive_image.variant_storage.adapter'
@@ -0,0 +1,2 @@
progressive_image:
resource: "@ProgressiveImageBundle/config/routes.php"
@@ -0,0 +1,23 @@
{
"bundles": {
"Tito10047\\ProgressiveImageBundle\\ProgressiveImageBundle": ["all"]
},
"copy-from-recipe": {
"config/": "%CONFIG_DIR%/"
},
"gitignore": [
"/%PUBLIC_DIR%/media/pgi/"
],
"composer-scripts": {
"progressive-image:generate-custom-css": "symfony-cmd"
},
"add-lines": [
{
"file": "assets/app.js",
"content": "import './styles/progressive-image-custom.css';",
"position": "after_target",
"target": "import './styles/app.css';",
"warn_if_missing": true
}
]
}
@@ -0,0 +1,12 @@
<fg=blue;options=bold>Progressive Image Bundle</> <fg=blue>is ready to use.</>
- The responsive breakpoint stylesheet was generated and imported into
<comment>assets/app.js</comment> automatically. Re-run
<comment>bin/console progressive-image:generate-custom-css</comment> whenever you
change <comment>responsive_strategy</comment>.
- Render your first image:
<comment><twig:pgi:Image src="{{ asset('images/hero.jpg') }}" alt="Hero" /></comment>
- If your project does <options=bold>not</> use Symfony UX AssetMapper (e.g. Webpack
Encore), remove <comment>asset_mapper_resolver</comment> from
<comment>%CONFIG_DIR%/packages/progressive_image.yaml</comment> and from the
<comment>default</comment> resolver chain.
- Full docs: <comment>https://pgi.blue/guide/getting-started</comment>