четверг, 23 ноября 2017 г.

Yii2 пакет для создания хэша изменения ресурсов

Хочу здесь поделиться простеньким классом для Yii2, который может управлять версиями ваших ресурсов css и js cинхронизируясь с git

<?php

namespace app\assets;

use Yii;
use yii\web\AssetBundle;

class HashedAsset extends AssetBundle
{
    public $hash;
    
    public function init()
    {
        parent::init();
        exec('git describe --always',$version_hash);
        if (isset($version_hash[0])) {
            $this->hash = md5($version_hash[0]);
            (isset($this->css) ? $this->symlinking($this->css) : null);
            (isset($this->js)  ? $this->symlinking($this->js)  : null);
        }
    }

    public function symlinking(&$array) {
        $web_root = Yii::getAlias('@webroot');
        foreach($array as $key => $item) {
            $dir_to_link = $web_root . '/' . dirname($item);
            $common_hash = md5(dirname($item) . $this->hash);
            if (is_dir($dir_to_link)
                && !is_dir($web_root . '/assets/' . $common_hash)) {
                $link_dir = $web_root . '/assets/' . $common_hash;
                $res = symlink($dir_to_link, $link_dir);
            }
            if (is_dir($web_root . '/assets/' . $common_hash)) {
                $array[$key] = 'assets/' . $common_hash 
                    . '/' . basename($item);
            }
        }
    }
}

Комментариев нет:

Отправить комментарий

Linux командная строка узнаем оставшееся место

Чтобы посмотреть общую картину того, сколько места осталось в системе можно выполнить команду: df -h Чтобы вывести на экран сколько мес...