Laravel 框架下扩展包二次开发

约定要进行二开本地的扩展包都放在 packages/ 下

在项目根目录下创建packages文件夹,然后运行:

composer config repositories.0 path "packages/*"

此时的 composer.json 会多出一项配置:

"repositories": [{
    "type": "path",
    "url": "packages/*"
}]

也就是说,Laravel 在收到 HTTP 请求启动时,触发自动加载搜索模块的时候,也会搜索 packages/ 下的各个目录。

"require": {
    "php": "^7.3|^8.0",
    "fruitcake/laravel-cors": "^2.0",
    "guzzlehttp/guzzle": "^7.0.1",
    "jormin/laravel-ddoc": "^1.1",
    "laravel/framework": "^8.75",
    "laravel/sanctum": "^2.11",
    "laravel/tinker": "^2.5"
},

我们以自定义 jormin/laravel-ddoc 为例,在本地创建 packages 目录,然后将自定义的包拷贝到 packages/ 下,然后将 composer.json 定义的版本改为 dev-master(dev-分支名),参考如下方式修改:

"require": {
    "php": "^7.3|^8.0",
    "fruitcake/laravel-cors": "^2.0",
    "guzzlehttp/guzzle": "^7.0.1",
    "jormin/laravel-ddoc": "dev-master",
    "laravel/framework": "^8.75",
    "laravel/sanctum": "^2.11",
    "laravel/tinker": "^2.5"
},

然后运行 composer update jormin/laravel-ddoc,可以看到 composer 移除了原位置(vendor/jormin/laravel-ddoc)的源码,创建了一个符号链接,把 vendor/jormin/laravel-ddoc 指向了本地的 packages/laravel-ddoc。实现本地的修改的替换加载。

Loading composer repositories with package information
Updating dependencies
Lock file operations: 0 installs, 1 update, 0 removals
  - Upgrading jormin/laravel-ddoc (dev-master d7608d3 => dev-master)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 0 installs, 1 update, 0 removals
  - Removing jormin/laravel-ddoc (dev-master d7608d3)
  - Installing jormin/laravel-ddoc (dev-master): Junctioning from packages/laravel-ddoc
Package swiftmailer/swiftmailer is abandoned, you should avoid using it. Use symfony/mailer instead.
Generating optimized autoload files


接下来我们就可以根据我们的需求对packages/laravel-ddoc 做自定义修改啦!

评论注意事项
讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!

回复(0)

考拉开学

联系方式

微信昵称:考拉开学 联系电话:18653365468 邮箱:mail@mengyakeji.com
关于我们
关于我们
平台介绍
平台介绍
联系我们
联系我们