我正在开发专有软件的自定义编辑器安装程序,而且我不确定我应该如何测试和调试它。
Composer仅在指定为依赖项时加载插件,因此我创建了一个测试项目,将插件定义为依赖项,如下所示:
{
//...
"repositories": [
{
"type":"git",
"url":"/path/to/gitrepo"
}
],
"require":{
"myvendor/my-plugin":"dev-master"
}
}
问题是作曲家只使用最新的提交版本,这意味着如果我想测试一些东西,我必须先提交它。这会导致许多无用的"一行改变提交(比如"哦,我忘记了那里的逗号"),我真的不想在我的git repo历史中拥有它。
我想必须有一个更好的方法,但我找不到一个。理想情况下,我会将目录定义为存储库(这将是我的工作目录),但据我所知,没有像"目录"类型库。
答案 0 :(得分:4)
您可以在本地编辑供应商包的代码。当后来的作曲家想要更新这个包时,它会询问你如何处理修改过的文件。在这种情况下,您只需选择s
来存储更改即可。另请参阅this stackoverflow以了解可用选项的含义。
更新软件包后,您的更改将重新应用。
请参阅屏幕以获取示例对话框:
答案 1 :(得分:3)
对于开发而言,最好将正在进行的工作引用为path
类型。在主应用程序中,像这样在repositories
中设置一个包:
"repositories": [
{
"type": "path",
"version": "dev-master",
"url": "/home/user/log-viewer"
}
],
然后需要您的插件
composer require louisitvn/log-viewer:dev-master
这里的关键是要求您的软件包为dev-master
。输出可能如下所示:
$ composer require louisitvn/log-viewer:dev-master
Loading composer repositories with package information
Updating dependencies (including require-dev)
- Installing louisitvn/log-viewer (dev-master)
Symlinked from /home/user/log-viewer
如您所见,Composer在vendor/
中为该插件建立了符号链接,而不是对其进行克隆,因此您始终处于工作目录的最新更改之中。
答案 2 :(得分:0)
为此,我使用tags
和--force push
来库回购。
所以在我的项目中我有类似
{
//...
"repositories": [
{
"type":"git",
"url":"/path/to/gitrepo"
}
],
"require":{
"myvendor/my-plugin":"dev-tag"
}
}
当我对我的库仓库进行一些更改时,我会使用dev-tag
标记重新提交最后一次提交然后
git push origin master --force --tags
所以我的标签实际上是最后一次库提交。之后我只做
composer update
我的项目中包含所有库代码。
请勿将此工作流程与生产代码中使用的代码一起使用!