Издательские активы Laravel 5
Я использую Laravel 5, и я хочу опубликовать twitter bootstrap CSS и JS в общий каталог. Я использовал Composer для получения пакета twitter/bootstrap, и эта часть прошла нормально, поэтому файлы, которые я хочу, теперь находятся в поставщике /twitter/bootstrap/dist
Но я не могу заставить его работать. Я получаю "Нечего публиковать". сообщение каждый раз, когда я пытаюсь.
Вот шаги, которые я сделал:
-
использовать ремесленник для генерации класса: php artisan make:provider BootstrapServiceProvider
-
отредактируйте метод boot()
в этом классе
-
зарегистрировать поставщика услуг в config/app.php
providers => [...
'App\Providers\BootstrapServiceProvider',
],
Bellow - это мой сгенерированный файл с классом, и он отредактировал метод boot()
.
BootstrapServiceProvider.php
<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class BootstrapServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
* Move twitter bootstrap CSS and JS into public directory
*
* @return void
*/
public function boot()
{
$this->publishes([
__DIR__ . 'vendor/twitter/bootstrap/dist' => public_path('vendor/bootstrap'),
], 'public');
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
//
}
}
Я пытался:
php artisan vendor:publish --tag=public
php artisan vendor:publish --tag=public --force
php artisan vendor:publish
php artisan vendor:publish --force
А также попытался удалить второй 'public'
параметр из метода boot().
Каждый раз, когда я получаю ничего, чтобы публиковать. ,
boot() даже не вызван. Что мне нужно сделать, чтобы заставить его работать?
Может быть, поместить что-то в метод register()
? Сейчас просто пусто.
Или какой-то другой шаг?
Ответы
Ответ 1
Чтобы ответить на мой вопрос.
После переустановки Laravel с 5.0.26 до 5.0.25 все сработало.
Даже после его обновления до 5.0.26 и выше он все еще работает.
Я не знаю, почему это не сработало до обновления композитора.
Все остальное такое же, как и выше, за исключением того, что метод boot()
должен быть исправлен, чтобы указывать на правильный путь поставщика при вызове publishes()
.
Исправлена версия boot()
:
public function boot()
{
$this->publishes([
__DIR__ . '/../../vendor/twitter/bootstrap/dist' => public_path('vendor/bootstrap'),
], 'public');
}
Чтобы автоматизировать все это, добавьте эти записи в файл composer.json в scripts:
раздел "post-install-cmd" и "post-update-cmd":
"scripts": {
"post-install-cmd": [
"...",
"php artisan vendor:publish --tag=public --force"
],
"post-update-cmd": [
"...",
"php artisan vendor:publish --tag=public --force"
],
},
Ответ 2
Как установить Bootstrap в Laravel с помощью композитора
Хотя прошло уже год с момента публикации этого вопроса, я считаю, что мой ответ поможет кому-то помочь. Это отлично работает для меня.
Я использую Laravel Framework версии 5.2.31 (сделайте php artisan --version
чтобы проверить версию Laravel). Выполните следующие действия:
- Откройте терминал и запустите
composer require twbs/bootstrap 3.3.6
. Если вам нужна другая версия из 3.3.6, проверьте последнюю версию дистрибутива на странице https://packagist.org/packages/twbs/bootstrap. - Создайте класс провайдера Bootstrap с помощью команды artisan:
php artisan make:provider BootstrapServiceProvider
-
Откройте класс поставщика услуг Bootstrap в app/Providers/BootstrapServiceProvider.php
. Измените метод boot()
следующим образом:
public function boot() { $this->publishes([base_path('vendor/twbs/bootstrap/dist') => public_path('vendor/bootstrap')],'public'); }
Приведенный выше код даст указание artisan
скопировать каталог vendor/twbs/bootstrap/dist
в public/vendor/bootstrap
.
-
зарегистрируйте поставщика услуг в config/app.php, добавив DealerPortal\Providers\BootstrapServiceProvider::class,
под список поставщиков прикладных услуг
-
Запустить vendor:publish --tag=public --force
для выполнения этой задачи.
Бонусный шаг:
Если вы хотите автоматизировать процесс публикации Bootstrap, добавьте php artisan vendor:publish --tag=public --force
в post-install-cmd
и post-update-cmd
раздел вашего файла composer.json
.
Ответ 3
Настройка пути ниже работала для меня: (спасибо за остальную часть ответа)
public function boot()
{
$this->publishes([
vendor/twitter/bootstrap/dist' => public_path('vendor/bootstrap'),
], 'public');
}
Ответ 4
Это также может быть вызвано кешем конфигурации. если вы получите эту собственную ошибку, используйте конфигурацию php artisan: clear
и повторите попытку поставщика php-artisan: опубликуйте