Composer 扩展开发:本地运行扩展包
34

file

假设你开发了一个网站,并希望将网站的其中一部分分开独立成为一个包。你新建了一个新的仓库并在开发环境中准备好了,这时候你想看看网站和你自己新的包是怎样整合一起使用的,应该怎样去做呢?

本文将介绍如何使用 Composer 将本地的软件包加入到项目中。通过这种方式,你可以运行存储库的本地副本并测试您所做的任何更改。因为本地仓库会实时同步修改的内容,所以不需要中间提交和更新。

Path repository

For starters, add a new repository of the type "path" to your composer.json. This will tell Composer that the given path is another source (besides the default Packagist repository) for finding your dependencies.

My dev machine is a Laravel Homestead virtual machine. The code for my php-cca repository is in /home/vagrant/Code/php-cca so that is where I point Composer.

"repositories":[
    {
        "type": "path",
        "url": "/home/vagrant/Code/php-cca"
    }
]

Next time we run Composer it will look at Packagist and into the given directory. Custom repositories have preference over Packagist.

引入一个开发分支

现在 Composer 知道该怎么加载本地扩展包了,接下来引入一个具体版本。可以使用下面的命令来引入 dev-develop 分支:

composer require barryvanveen/php-cca dev-develop

通过使用上面的命令,可以从 develop 分支下拉取最新版本的代码。同时,也可以很轻松的切换到 dev-master 或者 dev-feature-awesome 分支。

这样,就可以从我们的本地安装最新版本的代码,而不仅是拉取我们提交或标记的版本代码。

Composer 会在控制台输出类似下面的提示:

Package operations: 5 installs, 0 updates, 0 removals
  ...
  - Installing barryvanveen/php-cca (dev-develop): Symlinking from /home/vagrant/Code/php-cca
  ...

现在,可以直接修改本地代码,并且可以在项目中直接测试,不需要提交或执行 composer update。 是不是非常棒!

当符号链接失败时

当我初次尝试上面我提到的步骤时,他没有成功。 我得到以下错误,声明 Composer 无法创建符号链接。

打包操作: 5 安装, 0 更新, 0 移除
  ...
  - Installing barryvanveen/php-cca (dev-develop): Symlinking from /home/vagrant/Code/php-cca
    Symlink failed, fallback to use mirroring!
    Mirroring from /home/vagrant/Code/php-cca

经过一番搜索之后, 这个问题是特定出现在运行虚拟机的 Windows 用户中。 Windows 不允许本地管理员创建符号链接。 幸运的是这个可以通过一个单一的更改来解决。

当你启动虚拟机时,请确保你 以管理员身份 执行操作。 就我而言, 我以管理员身份运行 Git Bash , 然后从这里执行 vagrant up ,  这立即解决了问题。

扩展阅读


Practice makes perfect.

原文地址:https://barryvanveen.nl/blog/44-package-...

译文地址:https://laravel-china.org/topics/8740/co...

本帖已被设为精华帖!
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 1

刚刚翻译了一半,突然想到自己英语水平一般,php也一般,单纯的是想提升一下自己的英语能力和php能力。放弃了一次自我提升的机会。心里很难受,但是我又怕我翻译的不对,你们会不会吐槽我。真心只是想提升一下自己。

7个月前

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