PHPackages                             solas-wyrd/yii2-static-assets-publisher - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [DevOps &amp; Deployment](/categories/devops)
4. /
5. solas-wyrd/yii2-static-assets-publisher

ActiveLibrary[DevOps &amp; Deployment](/categories/devops)

solas-wyrd/yii2-static-assets-publisher
=======================================

Automatic static asset publisher for Yii2 AssetBundle

1.0.0(today)00MITPHPPHP ^8.1

Since Jun 20Pushed todayCompare

[ Source](https://github.com/SolasWyrd/yii2-static-assets-publisher)[ Packagist](https://packagist.org/packages/solas-wyrd/yii2-static-assets-publisher)[ RSS](/packages/solas-wyrd-yii2-static-assets-publisher/feed)WikiDiscussions main Synced today

READMEChangelogDependencies (4)Versions (2)Used By (0)

Yii2 Static Assets Publisher
============================

[](#yii2-static-assets-publisher)

Пакет автоматически находит все конкретные классы, наследующие `yii\web\AssetBundle`, и публикует их во время сборки приложения.

Установка
---------

[](#установка)

```
composer require solas-wyrd/yii2-static-assets-publisher
```

Перед публикацией рекомендуется сформировать оптимизированный Composer classmap:

```
composer dump-autoload --optimize --classmap-authoritative
```

Интеграция
----------

[](#интеграция)

Готовый Yii2 console controller находится в:

```
examples/AssetBuildController.php

```

Скопируйте его в `commands/AssetBuildController.php` и при необходимости скорректируйте исключения.

Запуск:

```
php yii asset-build/publish
```

Docker
------

[](#docker)

```
RUN composer dump-autoload --optimize --classmap-authoritative \
    && php yii asset-build/publish
```

Автоматическое версионирование
------------------------------

[](#автоматическое-версионирование)

`ContentAssetPathHasher` строит имя publish-директории из:

- логического пути source-каталога;
- относительных имён файлов;
- содержимого каждого файла.

Hash автоматически меняется, когда файл:

- добавлен;
- удалён;
- переименован;
- изменён.

Время изменения файла не используется, поэтому результат воспроизводим между Docker-сборками. Вычисленный hash кэшируется в памяти процесса.

Тот же `ContentAssetPathHasher` необходимо использовать в runtime-конфигурации Yii `assetManager`, чтобы web-приложение генерировало те же URL, что и build-команда.

Пример:

```
use SolasWyrd\Yii2StaticAssets\Hash\ContentAssetPathHasher;

$hasher = new ContentAssetPathHasher([
    'app' => (string) Yii::getAlias('@app'),
    'vendor' => (string) Yii::getAlias('@vendor'),
]);

return [
    'basePath' => '@webroot/assets/builds',
    'baseUrl' => '/assets/builds',
    'appendTimestamp' => false,
    'linkAssets' => false,
    'forceCopy' => false,
    'hashCallback' => $hasher(...),
];
```

Поиск AssetBundle
-----------------

[](#поиск-assetbundle)

Поиск выполняется в два этапа:

1. Быстрый режим читает `vendor/composer/autoload_classmap.php`.
2. Если classmap отсутствует или пуст, выполняется рекурсивный обход заданных корней.

Строится граф наследования, поэтому обнаруживаются классы, наследующие промежуточные базовые AssetBundle. Абстрактные классы не публикуются.

Безопасность
------------

[](#безопасность)

Перед публикацией целевая директория полностью удаляется и создаётся заново. `BuildDirectory` разрешает только путь вида `.../assets/builds`.

Пакет рассчитан на запуск во время Docker build или другого build pipeline. При ошибке команда должна вернуть ненулевой exit code, чтобы образ не был опубликован.

Ограничения
-----------

[](#ограничения)

- Динамически объявленные через `eval()` классы не поддерживаются.
- Символические ссылки внутри source-каталогов не хешируются и не обходятся.
- Оптимальный режим требует `composer dump-autoload -o`.

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance100

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

0d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/103520796?v=4)[Solas](/maintainers/SolasWyrd)[@SolasWyrd](https://github.com/SolasWyrd)

---

Tags

dockeryii2assetsbuildasset managerasset bundlestatic assetssolas-wyrdasset-publisher

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/solas-wyrd-yii2-static-assets-publisher/health.svg)

```
[![Health](https://phpackages.com/badges/solas-wyrd-yii2-static-assets-publisher/health.svg)](https://phpackages.com/packages/solas-wyrd-yii2-static-assets-publisher)
```

###  Alternatives

[craftcms/cms

Craft CMS

3.6k3.6M2.9k](/packages/craftcms-cms)[tempest/framework

The PHP framework that gets out of your way.

2.2k31.1k12](/packages/tempest-framework)[yiisoft/yii2-apidoc

API Documentation generator for the Yii framework 2.0

260709.1k31](/packages/yiisoft-yii2-apidoc)[v.chetkov/php-clean-architecture

PHP Clean Architecture

14659.9k](/packages/vchetkov-php-clean-architecture)[mongosoft/yii2-soap-server

SOAP Server Extension for Yii 2

25270.3k](/packages/mongosoft-yii2-soap-server)[yii2-extensions/phpstan

PHPStan extension for Yii2

19152.4k26](/packages/yii2-extensions-phpstan)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
