Minify.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Framework\View\Asset\PreProcessor;
  7. use Magento\Framework\Code\Minifier\AdapterInterface;
  8. use Magento\Framework\View\Asset\Minification;
  9. use Magento\Framework\View\Asset\PreProcessor;
  10. use Magento\Framework\View\Asset\PreProcessorInterface;
  11. /**
  12. * Assets minification pre-processor
  13. */
  14. class Minify implements PreProcessorInterface
  15. {
  16. /**
  17. * @var AdapterInterface
  18. */
  19. protected $adapter;
  20. /**
  21. * @var Minification
  22. */
  23. protected $minification;
  24. /**
  25. * @param AdapterInterface $adapter
  26. * @param Minification $minification
  27. */
  28. public function __construct(AdapterInterface $adapter, Minification $minification)
  29. {
  30. $this->adapter = $adapter;
  31. $this->minification = $minification;
  32. }
  33. /**
  34. * Transform content and/or content type for the specified preprocessing chain object
  35. *
  36. * @param PreProcessor\Chain $chain
  37. * @return void
  38. */
  39. public function process(PreProcessor\Chain $chain)
  40. {
  41. if ($this->minification->isEnabled(pathinfo($chain->getTargetAssetPath(), PATHINFO_EXTENSION)) &&
  42. $this->minification->isMinifiedFilename($chain->getTargetAssetPath()) &&
  43. !$this->minification->isMinifiedFilename($chain->getOrigAssetPath())
  44. ) {
  45. $content = $this->adapter->minify($chain->getContent());
  46. $chain->setContent($content);
  47. }
  48. }
  49. }