Yii2: общие активы с расширенной конфигурацией

Я хотел бы использовать расширенную конфигурацию Yii2 с отдельными интерфейсами, бэкэнд, обычными и консольными приложениями. У меня есть много общих активов, включая таблицы стилей, js файлы и шрифты, которые будут использоваться как в интерфейсе, так и в бэкэнд-приложениях. Имеет смысл тогда разместить эти активы в общей папке с ресурсами.

Тогда начинается мое quandry. Кажется, мне нужен отдельный файл AppAsset.php для управления активами в интерфейсе и бэкэнд-частях общего приложения, потому что некоторые вещи будут отличаться между ними. (Я не совсем уверен, следует ли ссылаться на внешний интерфейс, бэкэнд и т.д. Как отдельные приложения в рамках чего-либо, или называть их суб-приложениями большого всеобъемлющего приложения.) Во всяком случае, похоже, мне понадобятся два AppAsset менеджеров. Я буду обрабатывать все преобразования файлов (например, scss → css) и сжатие файлов, поэтому мне не нужно настраивать менеджер ресурсов для этого.

К сожалению, документация по AppAsset и пакетам активов не совсем понятна, как включать определенные файлы или каталоги в пакет. Единственное, что я вижу, - это указать адресаты с использованием переменных $css, $js. Для входных каталогов я вижу только $sourcePath. Означает ли это, что я должен создать отдельный пакет (и $sourcePath) для каждого файла javascript, css, изображения и т.д. Это много пучков! Конечно, есть способ включить несколько файлов активов в один пакет. Может ли кто-нибудь показать мне, как?

Ответ 1

Ну, я считаю, что цель "пучка" - позволить вам выбирать, какие файлы вы хотите.

Вам не нужно создавать разные пакеты для каждого отдельного файла.

Например, в моем супер простом настраиваемом AssetManager у меня есть это:

namespace frontend\assets;
use yii\web\AssetBundle;
use yii\web\YiiAsset;

class CustomAsset extends AssetBundle{
    public $basePath = '@webroot';
    public $baseUrl = '@web';
    public $css = [
        'css/custom.css',
        'css/custom_modals.css'
    ];
}

Так как два CSS folders/files расположены во внешнем разделе моего проекта, и там также находится CustomAsset, когда я регистрирую этот AssetManager, он будет проходить через массив $css и добавлять их в заголовок. Он делает то же самое для массива $js, который вы добавите, если вам нужно. Кроме того, просто помните, что файлы должны быть в папке, доступной в Интернете.