composer 包仅用于在 Laravel 提供商中进行开发

问题描述 投票:0回答:2

如果我有一个包(我必须添加到

app/config/app.php
提供者/别名),我只真正想要在我的开发盒上(b/c我只用于开发)是否有一种方法可以让我做到这一点利用
composer require --dev <package>
沿 w/
composer install --no-dev

我需要在提供程序和别名数组中添加索引...但我不希望在可能的情况下在多个配置环境文件夹中管理这些大型数组

php laravel laravel-4
2个回答
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
投票
对于任何想在 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, ], ];
    
© www.soinside.com 2019 - 2024. All rights reserved.