Tim*_*ktu 8 php laravel composer-php laravel-5
我想编辑我在Laravel 5项目中从作曲家中提取的一个包,但是我相信如果我跑了composer update并且已经发布了这个包的新版本,我将失去所有的更改.我该如何编辑包?有没有办法将包从供应商目录中复制出来,以便我可以在项目的其他地方使用它?
Mor*_*abi 13
简单,快速,安全的方法:
首先从require中删除它
"require": {
"php": ">=5.6.4",
"laravel/framework": "5.3.*",
"laravelcollective/html": "^5.3.0", <==== remove this line
"barryvdh/laravel-debugbar": "^2.3",
"doctrine/dbal": "^2.5"
},
Run Code Online (Sandbox Code Playgroud)
然后将其添加到自动加载
"autoload": {
"psr-4": {
"App\\": "app/",
"Collective\\Html\\": "packages/laravelcollective/html/src", <==== add this line
},
}
Run Code Online (Sandbox Code Playgroud)
请不要忘记跑步
composer dumpauto
Run Code Online (Sandbox Code Playgroud)
出于您指出的原因,编辑作曲家包实际上并不安全。
我所做的是扩展我想要/需要更改的类。
我在这里用 Filesystem 类完成了它。它不能确保它不会中断,但它确实可以让您在不覆盖更改的情况下进行更新。
配置/app.php
<?php
return [
'providers' => [
// 'Illuminate\Filesystem\FilesystemServiceProvider',
'MyApp\Filesystem\FilesystemServiceProvider',
],
'aliases' => [
...
],
];
Run Code Online (Sandbox Code Playgroud)
MyApp\Filesystem\FilesystemServiceProvider.php
<?php namespace MyApp\Filesystem;
use Config;
use Storage;
use League\Flysystem\Filesystem;
use Dropbox\Client as DropboxClient;
use League\Flysystem\Dropbox\DropboxAdapter;
use Illuminate\Filesystem\FilesystemManager as LaravelFilesystemManager;
class FilesystemManager extends LaravelFilesystemManager{
public function createDropboxDriver(array $config)
{
$client = new DropboxClient($config['token'], $config['app']);
return $this->adapt(
new Filesystem(new DropboxAdapter($client))
);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5152 次 |
| 最近记录: |