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

说明

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 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 9
charliecen

请问下你用的是什么IDE

2年前

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

2年前

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

2年前
Summer

@iwzh 请使用 homestead

2年前

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

1年前

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

7个月前

@dying318 test/test:@dev,敲错了

7个月前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!