Я только начинаю изучать несколько фреймворков PHP. В примерах, которые я пробовал, все используют composer
, которого я раньше не использовал, поэтому пока что не совсем ясно.
Я указал некоторые JS и CSS-библиотеки в composer.json
и выполнил composer install
. Теперь эти библиотеки добавляются в папку vendor
.
Теперь, как я должен использовать файлы JS и CSS, которые находятся в этих папках, например bootstrap/dist/css/bootstrap.min.css
? Примеры, которые я попробовал, либо просто имеют копию в public/css
папке, либо использовать удаленную ссылку, например <link href="//netdna.bootstrapcdn.com/bootswatch/2.3.1/united/bootstrap.min.css" rel="stylesheet">
в volt
файле.
По какой-то причине мне не нравятся удаленные ссылки, подобные этим в моем приложении (я боюсь, что они могут быть «вниз» когда-нибудь). Но другой вариант тоже не очень красив, я думаю, так как мне еще нужно выбрать нужные файлы для копирования из vendor
на public
.
Разве нет «автоматического» способа сделать это? Или, может быть, указав его в контроллер, который затем копирует файлы в него?
Композитор был написан для получения зависимостей PHP. Он не очень хорошо работает с другими веб-ресурсами, такими как CSS или JS-файлы.
Плагин создания композитора
Для решения проблемы извлечения активов плагин Composer Asset был разработан François Pluchino (fxp). Он предоставляет менеджер зависимости NPM / Bower для Composer. Это мост для этих менеджеров зависимостей и будет загружать материал в папку поставщика.
Имейте в виду, что вы всегда можете напрямую использовать Bower или NPM. Выполните ваши зависимости PHP с помощью Composer, определенных в composer.json. Извлеките свои активы с помощью Bower, определенных в bower.json. Это может быть более чистый подход.
Документация – Packagist
Вы можете потребовать его от CLI: для composer require fxp/composer-asset-plugin
Например, для извлечения активов «Twitters Bootstrap» и «JQuery»:
{ "require": { "bower-asset/bootstrap": "dev-master", "bower-asset/jquery-2.1.0": "2.1.0" } }
Некоторые структуры предоставляют пользовательские обработчики для активов, в основном для поддержки их индивидуального расположения папок и копирования вещей в правильные места из папки поставщика. Я не знаю, есть ли у Фалкона что-то, чтобы получить активы.
Разве нет «автоматического» способа сделать это? Или, может быть, указав его в контроллер, который затем копирует файлы в него?
Копирование активов из папки поставщика в правильное место в макете приложения – это еще одна история.
Нет автоматического способа сделать это. Вы должны сами обеспечить механизм.
Например, вы можете изменить путь установки от поставщика к public/assets
или чему-то еще, см. https://github.com/francoispluchino/composer-asset-plugin/blob/master/Resources/doc/index.md#define-a -custom-каталог-для-активов-установки
Плагин не копирует вещи.
Bower + Grunt (краткое: извлеките активы с помощью Bower, скопируйте материал с помощью Grunt)
Ближайшим к «указанию контроллера» будет настройка задачи Grunt для копирования только нужного материала с Bower из web/assets/vendor
в папку web/assets/app
.
Другими словами: даже менеджер пакетов JS, такой как Bower, обеспечивает автоматическое копирование основных файлов API. Bower выведет последнюю версию jQuery в определенную папку поставщика, но она не будет автоматически копировать jquery.min.js
в web/assets/js/jquery.min.js
. Вам нужно выполнить задачу поверх нее.