Laravel 5 发布资产

Laravel 5 Publishing Assets

我正在使用 Laravel 5,我想将推特 bootstrap CSS 和 JS 发布到 public 目录。 我确实使用了 Composer 来获取 twitter/bootstrap 包并且那部分没问题,所以我想要的文件现在在 vendor/twitter/bootstrap/dist

但我无法让它工作。我每次尝试都会收到 'Nothing to publish.' 消息。
以下是我采取的步骤:

波纹管是我用 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 版本)。按照以下步骤操作:

  1. 打开终端并运行composer require twbs/bootstrap 3.3.6。如果您想要与 3.3.6 不同的版本,请查看 https://packagist.org/packages/twbs/bootstrap.
  2. 上的最新分发版本
  3. 使用 artisan 命令创建 Bootstrap 服务提供者 class:php artisan make:provider BootstrapServiceProvider
  4. 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

  5. 通过在应用程序服务提供商列表下方添加DealerPortal\Providers\BootstrapServiceProvider::class,,在config/app.php中注册服务提供商

  6. 运行 vendor:publish --tag=public --force 完成这个任务。

奖励步骤:

如果您想自动发布 Bootstrap 的过程,请将 php artisan vendor:publish --tag=public --force 添加到 composer.json 文件的 post-install-cmdpost-update-cmd 部分。