Composer 扩展开发:本地运行扩展包
假设你开发了一个网站,并希望将网站的其中一部分分开独立成为一个包。你新建了一个新的仓库并在开发环境中准备好了,这时候你想看看网站和你自己新的包是怎样整合一起使用的,应该怎样去做呢?
本文将介绍如何使用 Composer 将本地的软件包加入到项目中。通过这种方式,你可以运行存储库的本地副本并测试您所做的任何更改。因为本地仓库会实时同步修改的内容,所以不需要中间提交和更新。
路径形式的仓库
首先,composer.json 文件中添加一个类型为 "path" 的仓库。这样,Composer 就能通过制定的路径(不是 Packagist 仓库的形式)找到依赖的资源。
我本地的开发环境是 Laravel Homestead。我的代码 php-cca 保存在 /home/vagrant/Code/php-cca
路径下,这也是 Composer 的工作目录。
"repositories":[
{
"type": "path",
"url": "/home/vagrant/Code/php-cca"
}
]
当我们下次运行 Composer 时,就会同时从 Packagist 和给定的路径查找依赖的资源。并且路径形式的仓库优先级高于 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
, 这立即解决了问题。
扩展阅读
- 学习更多关于 Composer repositories 和 aliases 在这些文档中.
- Martin Hujer 已经发表了一个博客在 使用 Composer 的22个技巧.
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: