class JsOptimizer in Drupal 9
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/Asset/JsOptimizer.php \Drupal\Core\Asset\JsOptimizer
Optimizes a JavaScript asset.
Hierarchy
- class \Drupal\Core\Asset\JsOptimizer implements AssetOptimizerInterface
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
File
- core/lib/ Drupal/ Core/ Asset/ JsOptimizer.php, line 10 
Namespace
Drupal\Core\AssetView 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
| Name   | Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| JsOptimizer:: | public | function | Processes the contents of a javascript asset for cleanup. Overrides AssetOptimizerInterface:: | |
| JsOptimizer:: | public | function | Optimizes an asset. Overrides AssetOptimizerInterface:: | 
