Как скопировать файлы CSS и JS в папку поставщика композитора?

Я только начинаю изучать несколько фреймворков 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.

Разве нет "автоматического" способа сделать это? Или, может быть, указав его в контроллер, который затем копирует файлы в public?

Ответ 1

Композитор был написан для получения зависимостей PHP. Он не хорошо работает с другими сетевыми ресурсами, такими как CSS или JS файлы.

Плагин для компоновщика композиций

Чтобы решить проблему получения активов, плагин Composer Asset был разработан Франсуа Плучино (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-directory-for-the-assets-installation

Плагин не копирует вещи вокруг.

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. Вам нужна задача поверх нее.