Как настроить Bootstrap после загрузки через Composer?
Я новичок в Composer, поэтому я мало что знаю об этом и имею небольшой опыт разработки веб-приложений.
Я читал Nettuts+ Учебное пособие и у меня есть основной вопрос о Composer.
{
"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
, как сделать Bootstrap доступным для использования в проекте Laravel?
Я имею в виду, я вижу, что пакет Bootstrap загружен в каталог поставщика. Раньше я только загружал Bootstrap со своего официального сайта и вручную помещал файлы в публичный каталог Laravel, но какой правильный способ сделать это здесь? Могу ли я оставить файлы Bootstrap там, где они есть, потому что я хочу периодически обновлять пакет Bootstrap до последней версии?
Благодарю.
Ответы
Ответ 1
У нас есть команда 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
Я не уверен в пути. Но это должно сработать.
Ответ 2
Как говорится в учебнике, вам необходимо скопировать его в общий каталог:
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
EDIT:
У вас действительно есть их копия, потому что ваши файлы с данными должны находиться только в общей папке, а Composer - о размещении пакетов в папке вашего поставщика, которая не должна быть видимой во внешний мир.
Но вы можете создать Composer post-install-cmd:
{
"scripts": {
"post-update-cmd": "MyVendor\\MyClass::postUpdate",
}
}
И скопируйте эти файлы для вас каждый раз, когда происходит обновление. Его можно написать с помощью PHP, bash или любого другого языка, который вы можете запустить на своем хосте. Документы: http://getcomposer.org/doc/articles/scripts.md.
Ответ 3
Просто понял, что php artisan asset:publish --path="vendor/twbs/bootstrap/dist/" bootstrap
или php artisan vendor:publish --path="vendor/twbs/bootstrap/dist/" bootstrap
больше не работают.
Что сработало для меня, так это отредактировать композитор .json, чтобы добавить следующее в scripts
, post-update-cmd
:
"scripts": {
"post-update-cmd": [
"php artisan optimize",
"mkdir -p public/bootstrap",
"cp -R vendor/twbs/bootstrap/dist/ public/bootstrap/"
]}
Ответ 4
Просто выделите папку, указанную выше, 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/"
]
},
}
Ответ 5
Это сработало лучше для меня
"scripts": {
"post-update-cmd": [
"mkdir -p html/vendor/",
"ln -sfr vendor/twbs/bootstrap/dist html/vendor/bootstrap"
]
},
Флаг "r" сделал относительную симлинку, тем самым указывая на реальную папку
Ответ 6
Я новичок в Laravel и Bootstrap (и их совместном использовании), и я наткнулся на эту тему, имея ту же проблему. Я создал новый проект Laravel, а затем добавил Bootstrap, выполнив следующую команду из корневого каталога проекта Laravel:
% композитор требует twbs/bootstrap
Затем в моем файле просмотра я включил следующий код:
<link href="css/app.css" rel="stylesheet">
Похоже, что композитор (или bootstrap) добавляет app.css, который включает в себя файлы Bootstrap css (которые находятся в непубличной папке поставщика) по ссылке. Добавлена ссылка на app.css, и я смог использовать компоненты Bootstrap в моем представлении.