class JsOptimizer

Same name in other branches
  1. 9 core/lib/Drupal/Core/Asset/JsOptimizer.php \Drupal\Core\Asset\JsOptimizer
  2. 10 core/lib/Drupal/Core/Asset/JsOptimizer.php \Drupal\Core\Asset\JsOptimizer
  3. 11.x core/lib/Drupal/Core/Asset/JsOptimizer.php \Drupal\Core\Asset\JsOptimizer

Optimizes a JavaScript asset.

Hierarchy

Expanded class hierarchy of JsOptimizer

1 file declares its use of JsOptimizer
JsOptimizerUnitTest.php in core/tests/Drupal/Tests/Core/Asset/JsOptimizerUnitTest.php
1 string reference to 'JsOptimizer'
core.services.yml in core/core.services.yml
core/core.services.yml
1 service uses JsOptimizer
asset.js.optimizer in core/core.services.yml
Drupal\Core\Asset\JsOptimizer

File

core/lib/Drupal/Core/Asset/JsOptimizer.php, line 10

Namespace

Drupal\Core\Asset
View source
class JsOptimizer implements AssetOptimizerInterface {
    
    /**
     * {@inheritdoc}
     */
    public function optimize(array $js_asset) {
        if ($js_asset['type'] !== 'file') {
            throw new \Exception('Only file JavaScript assets can be optimized.');
        }
        if (!$js_asset['preprocess']) {
            throw new \Exception('Only file JavaScript assets with preprocessing enabled can be optimized.');
        }
        // If a BOM is found, convert the file to UTF-8, then use substr() to
        // remove the BOM from the result.
        $data = file_get_contents($js_asset['data']);
        if ($encoding = Unicode::encodingFromBOM($data)) {
            $data = mb_substr(Unicode::convertToUtf8($data, $encoding), 1);
        }
        elseif (isset($js_asset['attributes']['charset'])) {
            $data = Unicode::convertToUtf8($data, $js_asset['attributes']['charset']);
        }
        // No-op optimizer: no optimizations are applied to JavaScript assets.
        return $data;
    }
    
    /**
     * Processes the contents of a javascript asset for cleanup.
     *
     * @param string $contents
     *   The contents of the javascript asset.
     *
     * @return string
     *   Contents of the javascript asset.
     */
    public function clean($contents) {
        // Remove JS source and source mapping urls or these may cause 404 errors.
        $contents = preg_replace('/\\/\\/(#|@)\\s(sourceURL|sourceMappingURL)=\\s*(\\S*?)\\s*$/m', '', $contents);
        return $contents;
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title
JsOptimizer::clean public function Processes the contents of a javascript asset for cleanup. Overrides AssetOptimizerInterface::clean
JsOptimizer::optimize public function Optimizes an asset. Overrides AssetOptimizerInterface::optimize

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.