composer包仅用于laravel提供者的开发

时间:2014-03-12 15:32:09

标签: laravel laravel-4

如果我有一个包(我必须添加到app/config/app.php提供者/别名),我只想在我的开发盒上(b / c我只用于开发)是否有一种方法可以允许我这样做是利用composer require --dev <package>沿着composer install --no-dev

我需要在提供者和别名数组中添加一个索引......但是如果可能的话,我会不喜欢来管理多个配置环境文件夹中的那些大型数组

2 个答案:

答案 0 :(得分:8)

config目录中创建一个与您的环境名称匹配的文件夹。在这种情况下dev

接下来,重新创建您要覆盖的所有文件并将它们放入该文件夹中。在这种情况下app.php

接下来打开bootstrap/start.php并找到$app->detectEnvironment。传递给此方法的数组确定您正在使用的环境。将此数组的密钥设置为dev将使用dev文件夹中的对应文件覆盖任何配置文件。

如果您不希望在app.php文件中为每个环境创建一个全新的提供者数组,并且您只想在某个dev环境中添加某个提供者,则可以使用帮助方法像这样...

'providers' => append_config(array(
    'DevOnlyServiceProvider',
))

所有这些信息都来自此处的Laravel文档:http://laravel.com/docs/configuration

答案 1 :(得分:1)

对于任何想要在Laravel 5中执行此操作的人,您仍然可以模拟L4行为。

app/Providers/AppServiceProvider的顶部添加:

use Illuminate\Foundation\AliasLoader;

然后编辑register()方法:

public function register()
{

    $path = $this->app->environment() .'.app';
    $config = $this->app->make('config');
    $aliasLoader = AliasLoader::getInstance();

    if ($config->has($path)) {
        array_map([$this->app, 'register'], $config->get($path .'.providers'));

        foreach ($config->get($path .'.aliases') as $key => $class) {
            $aliasLoader->alias($key, $class);
        }
    }
}

然后只需添加config/<YOUR ENVIRONMENT NAME>/app.php配置文件并定义其他提供程序和别名,与app.php相同

例如:

return [

    'providers' => [
        Barryvdh\Debugbar\ServiceProvider::class,
    ],

    'aliases' => [
        'Debugbar' => Barryvdh\Debugbar\Facade::class,
    ],

];