Laravel 5 发布资产
Laravel 5 Publishing Assets
我正在使用 Laravel 5,我想将推特 bootstrap CSS 和 JS 发布到 public 目录。
我确实使用了 Composer 来获取 twitter/bootstrap 包并且那部分没问题,所以我想要的文件现在在 vendor/twitter/bootstrap/dist
但我无法让它工作。我每次尝试都会收到 'Nothing to publish.' 消息。
以下是我采取的步骤:
使用artisan生成class:php artisan make:provider BootstrapServiceProvider
在 class
中编辑 boot()
方法
在config/app中注册服务提供商。php
提供商 => [
...<br>
'App\Providers\BootstrapServiceProvider',<br>
],
波纹管是我用 class 生成的文件,它是用 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
并且还尝试从 boot() 方法中删除第二个 'public'
参数。
每次我都没有什么可发布的。。
boot() 方法甚至没有被调用。
我需要做什么才能使其正常工作?
也许在 register()
方法中放一些东西?现在是空的。
或者其他一些步骤?
回答我自己的问题。
将 Laravel 从 5.0.26 重新安装到 5.0.25 后一切正常。
即使再次更新到 5.0.26 及更高版本,它仍然有效。
我不知道为什么它在 composer 更新之前不起作用。
除了 boot()
方法在调用 publishes()
.
时必须固定指向正确的供应商路径外,其他一切都与上面相同
boot()
的固定版本:
public function boot()
{
$this->publishes([
__DIR__ . '/../../vendor/twitter/bootstrap/dist' => public_path('vendor/bootstrap'),
], 'public');
}
要使其全部自动化,请在 "post-install-cmd" 和 [=34 下的 scripts:
部分的 composer.json 中添加此条目=]:
"scripts": {
"post-install-cmd": [
"...",
"php artisan vendor:publish --tag=public --force"
],
"post-update-cmd": [
"...",
"php artisan vendor:publish --tag=public --force"
],
},
设置下面的路径对我有用:(感谢其余的回答)
public function boot()
{
$this->publishes([
vendor/twitter/bootstrap/dist' => public_path('vendor/bootstrap'),
], 'public');
}
这也可能是由配置缓存引起的。如果你遇到这种错误,请使用 php artisan config:clear
然后重试 php artisan vendor:publish
如何使用 composer
在 Laravel 中安装 Bootstrap
虽然这个问题发布已经一年了,但我相信我的回答会对那里的人有所帮助。这非常适合我。
我正在使用 Laravel 框架版本 5.2.31(执行 php artisan --version
检查您的 Laravel 版本)。按照以下步骤操作:
- 打开终端并运行
composer require twbs/bootstrap 3.3.6
。如果您想要与 3.3.6 不同的版本,请查看 https://packagist.org/packages/twbs/bootstrap. 上的最新分发版本
- 使用 artisan 命令创建 Bootstrap 服务提供者 class:
php artisan make:provider BootstrapServiceProvider
在 app/Providers/BootstrapServiceProvider.php
中打开您的 Bootstrap 服务提供商 class。编辑 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
。
通过在应用程序服务提供商列表下方添加DealerPortal\Providers\BootstrapServiceProvider::class,
,在config/app.php中注册服务提供商
运行 vendor:publish --tag=public --force
完成这个任务。
奖励步骤:
如果您想自动发布 Bootstrap 的过程,请将 php artisan vendor:publish --tag=public --force
添加到 composer.json
文件的 post-install-cmd
和 post-update-cmd
部分。
我正在使用 Laravel 5,我想将推特 bootstrap CSS 和 JS 发布到 public 目录。 我确实使用了 Composer 来获取 twitter/bootstrap 包并且那部分没问题,所以我想要的文件现在在 vendor/twitter/bootstrap/dist
但我无法让它工作。我每次尝试都会收到 'Nothing to publish.' 消息。
以下是我采取的步骤:
使用artisan生成class:
php artisan make:provider BootstrapServiceProvider
在 class
中编辑 在config/app中注册服务提供商。php
提供商 => [ ...<br> 'App\Providers\BootstrapServiceProvider',<br> ],
boot()
方法
波纹管是我用 class 生成的文件,它是用 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
并且还尝试从 boot() 方法中删除第二个 'public'
参数。
每次我都没有什么可发布的。。
boot() 方法甚至没有被调用。
我需要做什么才能使其正常工作?
也许在 register()
方法中放一些东西?现在是空的。
或者其他一些步骤?
回答我自己的问题。
将 Laravel 从 5.0.26 重新安装到 5.0.25 后一切正常。
即使再次更新到 5.0.26 及更高版本,它仍然有效。
我不知道为什么它在 composer 更新之前不起作用。
除了 boot()
方法在调用 publishes()
.
boot()
的固定版本:
public function boot()
{
$this->publishes([
__DIR__ . '/../../vendor/twitter/bootstrap/dist' => public_path('vendor/bootstrap'),
], 'public');
}
要使其全部自动化,请在 "post-install-cmd" 和 [=34 下的 scripts:
部分的 composer.json 中添加此条目=]:
"scripts": {
"post-install-cmd": [
"...",
"php artisan vendor:publish --tag=public --force"
],
"post-update-cmd": [
"...",
"php artisan vendor:publish --tag=public --force"
],
},
设置下面的路径对我有用:(感谢其余的回答)
public function boot()
{
$this->publishes([
vendor/twitter/bootstrap/dist' => public_path('vendor/bootstrap'),
], 'public');
}
这也可能是由配置缓存引起的。如果你遇到这种错误,请使用 php artisan config:clear
然后重试 php artisan vendor:publish
如何使用 composer
在 Laravel 中安装 Bootstrap虽然这个问题发布已经一年了,但我相信我的回答会对那里的人有所帮助。这非常适合我。
我正在使用 Laravel 框架版本 5.2.31(执行 php artisan --version
检查您的 Laravel 版本)。按照以下步骤操作:
- 打开终端并运行
composer require twbs/bootstrap 3.3.6
。如果您想要与 3.3.6 不同的版本,请查看 https://packagist.org/packages/twbs/bootstrap. 上的最新分发版本
- 使用 artisan 命令创建 Bootstrap 服务提供者 class:
php artisan make:provider BootstrapServiceProvider
在
app/Providers/BootstrapServiceProvider.php
中打开您的 Bootstrap 服务提供商 class。编辑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
。通过在应用程序服务提供商列表下方添加
DealerPortal\Providers\BootstrapServiceProvider::class,
,在config/app.php中注册服务提供商运行
vendor:publish --tag=public --force
完成这个任务。
奖励步骤:
如果您想自动发布 Bootstrap 的过程,请将 php artisan vendor:publish --tag=public --force
添加到 composer.json
文件的 post-install-cmd
和 post-update-cmd
部分。