code: protected function buildTarget($target, $type, $bundles)
      {
          $inputFiles = [];
          foreach ($target->depends as $name) {
              if (isset($bundles[$name])) {
                  if (!$this->isBundleExternal($bundles[$name])) {
                      foreach ($bundles[$name]->$type as $file) {
                          if (is_array($file)) {
                              $inputFiles[] = $bundles[$name]->basePath . '/' . $file[0];
                          } else {
                              $inputFiles[] = $bundles[$name]->basePath . '/' . $file;
                          }
                      }
                  }
              } else {
                  throw new Exception("Unknown bundle: '{$name}'");
              }
          }
  
          if (empty($inputFiles)) {
              $target->$type = [];
          } else {
              FileHelper::createDirectory($target->basePath, $this->getAssetManager()->dirMode);
              $tempFile = $target->basePath . '/' . strtr($target->$type, ['{hash}' => 'temp']);
  
              if ($type === 'js') {
                  $this->compressJsFiles($inputFiles, $tempFile);
              } else {
                  $this->compressCssFiles($inputFiles, $tempFile);
              }
  
              $targetFile = strtr($target->$type, ['{hash}' => md5_file($tempFile)]);
              $outputFile = $target->basePath . '/' . $targetFile;
              rename($tempFile, $outputFile);
              $target->$type = [$targetFile];
          }
      }
docs: Builds output asset bundle.
  @param \yii\web\AssetBundle $target output asset bundle
  @param string $type either 'js' or 'css'.
  @param \yii\web\AssetBundle[] $bundles source asset bundles.
  @throws Exception on failure.