php - 同时开发 Composer 的库和主项目的最佳实践是什么?
问题描述
我正在努力了解在主要项目开发和库开发中使用 Git 的最佳实践是什么。我将尝试解释:我正在同时开发一个项目和一个库。它们都在 GitHub 上。这是我目前的工作流程:
- 在库中进行更改
- 提交并推送到 GitHub,在 Packagist 上发布和更新
- 在主工程中运行
composer update
,这样会下载新版本的库 - 使用新的库版本进行测试
这太复杂了,也不对。这个问题的锻炼方法是什么?我有一个选择:
- 将库定义为本地存储库,并将此定义放在主项目的 composer.json 文件中。但这很奇怪,因为如果我将 composer.json 上传到 GitHub,它将包含本地 repo 定义,这是不对的。
也许有一些聪明而酷的方法可以摆脱这个问题,但我不知道。请解释如何做到这一点。提前致谢。
PS 我正在使用 PhpStorm,也许它有一个选项可以帮助我们解决问题。
解决方案
如果您经常更新主项目使用的库,则应考虑将其托管为本地存储库。
您可以使用 composer CLI 添加存储库(请参阅文档composer.json
),但手动更新文件要简单得多。
打开您的composer.json
文件并找到该repositories
属性(如果它不存在,则在根范围内创建它)。
它应该是一个对象数组,每个对象都应该有一个类型(版本控制系统的 vcs)和一个 url。
还将您的库添加到require
. 如果您愿意,可以使用 git 版本标签,但指向dev-master
是一种非常常见的做法。
{
"name": "mainproject",
"description": "Main project development",
"repositories": [{
"type": "vcs",
"url": "ssh://git@my-git-server-url.com/library.git"
}],
"require": {
"library/library": "dev-master"
}
}
当您更新了您的库(并将更改推送到存储库)后,您可以简单地composer update library/library
从您的主开发项目运行以从您的库中获取所有更改。
推荐阅读
- android - Wi-Fi Aware (NAN) 的主首选项是否在某些设备上具有默认值?
- scala - 在 scala 中为 SQS 功能编写模拟
- html - Summernote onkeyup 功能替换特殊字符
- flutter - 错误:不能将参数类型“Context”分配给参数类型“BuildContext”?
- dataframe - 限制 spark.read pyspark 的分区数
- python - Python .exe 脚本在 Windows 中立即关闭
- http - Kotlin - WebView 不加载网页
- c++ - 抛出“std::length_error”实例后调用终止
- python - 无法通过 xpath 或链接文本使用 selenium python 访问链接
- node.js - 如何将十六进制字符串保存到 spiffs 中的 png 文件以创建图像