Laravel 5出版资产

ton*_*rmc 13 php twitter-bootstrap laravel-5

我正在使用Laravel 5,我想将twitter bootstrap CSS和JS发布到公共目录.我确实使用了Composer来获取twitter/bootstrap包,那部分没问题,所以我想要的文件现在在vendor/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()
    {
        //
    }

}
Run Code Online (Sandbox Code Playgroud)

我试过了:

php artisan vendor:publish --tag=public
php artisan vendor:publish --tag=public --force
php artisan vendor:publish
php artisan vendor:publish --force
Run Code Online (Sandbox Code Playgroud)

并尝试'public'从boot()方法中删除第二个参数.

每次我都没有发布任何东西..

boot()方法甚至没有被调用.我需要做些什么才能让它发挥作用?
也许在register()方法中添加一些东西?现在只是空的.
或者其他一些步骤?

ton*_*rmc 9

回答我自己的问题.

从5.0.26到5.0.25重新安装Laravel之后一切正常.
即使再次更新到5.0.26及更高版本,它仍然有效.

我不知道为什么它在作曲家更新之前不起作用.

其他所有内容与上述相同,但boot()必须修改方法以在调用时指向正确的供应商路径publishes().

修正版boot():

public function boot()
{
    $this->publishes([
        __DIR__ . '/../../vendor/twitter/bootstrap/dist' => public_path('vendor/bootstrap'),
    ], 'public');
}
Run Code Online (Sandbox Code Playgroud)

要自动执行此操作,请scripts:"post-install-cmd""post-update-cmd"下的部分中的composer.json中添加此条目:

"scripts": {
    "post-install-cmd": [
          "...",
          "php artisan vendor:publish --tag=public --force"
    ],
    "post-update-cmd": [
          "...",
          "php artisan vendor:publish --tag=public --force"
    ],
},
Run Code Online (Sandbox Code Playgroud)


小智 6

如何使用 composer 在 Laravel 中安装 Bootstrap

虽然这个问题发布已经一年了,但我相信我的回答会帮助那里的人。这对我来说非常有效。

我正在使用 Laravel Framework 版本 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. 使用 artisan 命令创建一个 Bootstrap 服务提供者类: php artisan make:provider BootstrapServiceProvider
  3. 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/distpublic/vendor/bootstrap.

  4. 在 config/app.php 中注册服务提供者,在Application Service ProvidersDealerPortal\Providers\BootstrapServiceProvider::class,列表下方添加

  5. 运行vendor:publish --tag=public --force以完成此任务。

奖励步骤:

如果你想自动发布引导所有附加的过程php artisan vendor:publish --tag=public --forcepost-install-cmdpost-update-cmd你的部分composer.json文件。