Как настроить начальную загрузку после загрузки через composer?
Я только начинаю использовать composer, я так мало знаю об этом и имею небольшой опыт разработки веб-приложений.
Я только что прошелся по Учебнику Nettuts+, поэтому у меня есть основной вопрос о композиторе.
{
"require": {
"laravel/framework": "4.0.*",
"way/generators": "dev-master",
"twitter/bootstrap": "dev-master",
"conarwelsh/mustache-l4": "dev-master"
},
"require-dev": {
"phpunit/phpunit": "3.7.*",
"mockery/mockery": "0.7.*"
},
"autoload": {
"classmap": [
"app/commands",
"app/controllers",
"app/models",
"app/database/migrations",
"app/database/seeds",
"app/tests/TestCase.php"
]
},
"scripts": {
"post-update-cmd": "php artisan optimize"
},
"minimum-stability": "dev"
}
Если я настрою свой composer.json, как указано выше, после выполнения composer install --dev
, как мне сделать загрузочный файл доступным для использования в проекте Laravel?
Я имею в виду, я вижу, что пакет начальной загрузки загружен поставщику каталог. Раньше я загружал bootstrap только с официального сайта и вручную помещал файлы в общедоступный каталог Laravel, но в настоящее время как правильно это сделать? Могу ли я оставить файлы начальной загрузки там, где они есть, потому что я хочу периодически обновлять пакет начальной загрузки до последней версии?
Спасибо.
6 answers
У нас есть команда artisan для публикации ресурсов (CSS, JS,..). Что-то вроде этого должно сработать.
php artisan asset:publish --path="vendor/twitter/bootstrap/bootstrap/css" bootstrap/css
php artisan asset:publish --path="vendor/twitter/bootstrap/bootstrap/js" bootstrap/js
Я не уверен насчет пути.. Но это должно сработать.
Как сказано в руководстве, вы должны скопировать его в свой общедоступный каталог:
cp vendor/twitter/bootstrap/docs/assets/js/html5shiv.js public/js/html5shiv.js
cp vendor/twitter/bootstrap/docs/assets/js/bootstrap.min.js public/js/bootstrap.min.js
ИЗМЕНИТЬ:
Вы действительно должны скопировать их, потому что ваши файлы активов должны находиться только в общей папке , а Composer - это все о размещении пакетов в папке вашего поставщика, которая не должна быть видна внешнему миру.
Но вы можете создать композитора после установки-cmd:
{
"scripts": {
"post-update-cmd": "MyVendor\\MyClass::postUpdate",
}
}
И заставляйте его копировать эти файлы для вас каждый раз, когда происходит обновление. Это может быть написанный с использованием PHP, bash или любого другого языка, который вы можете запустить на своем хосте. Документы: http://getcomposer.org/doc/articles/scripts.md.
Только что понял, что php artisan asset:publish --path="vendor/twbs/bootstrap/dist/" bootstrap
или php artisan vendor:publish --path="vendor/twbs/bootstrap/dist/" bootstrap
больше не работают.
Что сработало для меня, так это редактирование composer.json, чтобы добавить следующее в scripts
, post-update-cmd
:
"scripts": {
"post-update-cmd": [
"php artisan optimize",
"mkdir -p public/bootstrap",
"cp -R vendor/twbs/bootstrap/dist/ public/bootstrap/"
]}
Просто создайте символическую ссылку на папку, как сказано выше, с помощью Levixc:
{
"scripts": {
"post-update-cmd": "ln -sf vendor/twitter/bootstrap/dist/ public/vendor/bootstrap/"
}
}
Или несколько команд:
{
"scripts": {
"post-update-cmd": [
"php artisan optimize",
"ln -sf vendor/twitter/bootstrap/dist/ public/vendor/bootstrap/"
]
},
}
Это сработало лучше для меня
"scripts": {
"post-update-cmd": [
"mkdir -p html/vendor/",
"ln -sfr vendor/twbs/bootstrap/dist html/vendor/bootstrap"
]
},
Флаг "r" сделал символическую ссылку относительной, указывая таким образом на реальную папку
Я новичок в Laravel и Bootstrap (и в их совместном использовании), и я наткнулся на эту тему, когда у меня возникла та же проблема. Я создал новый проект Laravel, затем добавил начальную загрузку, выполнив следующую команду из корневого каталога проекта Laravel:
%композитору требуются twbs/начальная загрузка
Затем в мой файл просмотра я включил следующий код:
<link href="css/app.css" rel="stylesheet">
Похоже, что composer (или bootstrap) добавляет файл app.css, который включает файлы css начальной загрузки (которые находятся в папке "непубличный поставщик") по ссылке. Добавление ссылки на app.css сработало, и я смог использовать компоненты начальной загрузки, на мой взгляд.