yii\console\controllers\AssetController::buildTarget PHP Method

buildTarget() protected method

Builds output asset bundle.
protected buildTarget ( AssetBundle $target, string $type, AssetBundle[] $bundles )
$target yii\web\AssetBundle output asset bundle
$type string either 'js' or 'css'.
$bundles yii\web\AssetBundle[] source asset bundles.
    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];
        }
    }