Laravel 5 出版资产

2022-08-30 23:31:39

我正在使用Laravel 5,我想将twitter bootstrap CSS和JS发布到公共目录。我确实使用Composer来获取twitter / bootstrap软件包,并且该部分正常,因此我想要的文件现在位于seror/twitter/bootstrap/dist

但我无法让它工作。每次尝试时,我都会收到“没有什么要发布的”消息。
以下是我采取的步骤:

  • 使用工匠生成类:php artisan make:provider BootstrapServiceProvider

  • 编辑该类中的方法boot()

  • 在配置/应用程序中注册服务提供商.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

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

每次我都得到什么都没发布..

boot() 方法甚至不会被调用。我必须做些什么才能让它工作?
也许在方法中放了一些东西?现在只是空的。
还是其他步骤?register()


答案 1

回答我自己的问题。

从5.0.26重新安装Laravel到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 中的“post-install-cmd”和“post-update-cmd部分添加此条目:scripts:

"scripts": {
    "post-install-cmd": [
          "...",
          "php artisan vendor:publish --tag=public --force"
    ],
    "post-update-cmd": [
          "...",
          "php artisan vendor:publish --tag=public --force"
    ],
},

答案 2

如何使用作曲家在Laravel中安装Bootstrap

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

我使用的是Laravel Framework版本5.2.31(检查你的Laravel版本)。请按照以下步骤操作:php artisan --version

  1. 打开终端并运行 。如果您想要与 3.3.6 不同的版本,请查看 https://packagist.org/packages/twbs/bootstrap 上的最新分发版本。composer require twbs/bootstrap 3.3.6
  2. 使用 artisan 命令创建引导服务提供程序类:php artisan make:provider BootstrapServiceProvider
  3. 在 中打开引导服务提供程序类。按如下方式编辑该方法:app/Providers/BootstrapServiceProvider.phpboot()

    public function boot() { $this->publishes([base_path('vendor/twbs/bootstrap/dist') => public_path('vendor/bootstrap')],'public'); }

    上面的代码将指示将目录复制到 。artisanvendor/twbs/bootstrap/distpublic/vendor/bootstrap

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

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

奖励步骤:

如果要自动执行发布 Bootstrap 的过程,请添加到文件的一部分。php artisan vendor:publish --tag=public --forcepost-install-cmdpost-update-cmdcomposer.json


推荐