Composer 本地路径加载第三方扩展包

说明

Composer 提供了 Path 加载本地扩展包的方法,允许我们将扩展包以本地目录形式进行加载,方便快速修改,也可以把修改后的代码提交到项目的 CVS 中。

官方提供了 使用 path 加载的文档,可是操作起来不够清晰,此文档将一步步讲解如何操作。

下文将以 InfyOmLabs/laravel-generator 扩展包为例,演示所有的步骤。

1. 将项目本地化

你可以通过任何方式将 laravel-generator 放入你的 packages 目录。 本文将以 git clone 方式完成此操作。

根目录下:

mkdir packages
cd packages
git clone https://github.com/InfyOmLabs/laravel-generator.git

如下图:

file

2. 修改 composer.json 文件

我们可以利用 composer.json 里的 repositories 中的 path 方式创建自定义 package。官方解释见此

下面将 laravel-generator 的下载地址对应到本地的 packages/laravel-generator 目录。

{
    ...

    "repositories": [
        {
            "type": "path", 
            "url": "packages/laravel-generator"
        }
    ]
}

注意只修改 repositories 选项,如图:

file

3. 更新 composer

使用 require 命令来加载扩展包,此命令会自动把 InfyOmLabs/laravel-generator:*@dev 添加到 composer.json 文件中,并且安装依赖和更新 composer.lock 文件。

更多关于 composer require 的信息请见:正确的 Composer 扩展包安装方法

composer require InfyOmLabs/laravel-generator:*@dev

注意:

  • 这里的 *@dev 很重要;
  • 需要在 homestead 里运行

输入如下:

file

如果你新加入一个扩展包,上面的流程已经讲完。

4. 更换扩展包加载方式

如果你一开始是使用除了 path 的其他方式加载的,现在先换为使用 path 加载,你可以使用 remove 命令移除:

composer remove InfyOmLabs/laravel-generator

然后再参照上面的流程重新加载。

工作原理

composer 会创建一个文件夹链接,把 vendor/infyomlabs/laravel-generator 文件夹链接到 packages/laravel-generator 下,如图:

file

--

beers: :beers: :beers: :beers:


Practice makes perfect.

本帖已被设为精华帖!
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 9
charliecen

请问下你用的是什么IDE

2年前 评论

packages是否放在当前路径的文件夹中?

2年前 评论

我这种方式创建之后,每次更新会把包给删除。@Summer 有什么解决办法没有

2年前 评论
Summer

@iwzh 请使用 homestead

2年前 评论

@Summer 十分感谢,正需要这种

2年前 评论

composer require InfyOmLabs/laravel-generator:@dev 一定要在homestead里面运行是为什么?我在mac本地环境运行直接报错“zsh: no matches found: test/test:@dev”,如果把*去掉,test:test:@dev这就可以了。

1年前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!