Php 添加带有Composer的包(通过SVN)
我为我的个人PHP库创建了一个SVN存储库,并在根级别添加了一个composer.json文件:Php 添加带有Composer的包(通过SVN),php,svn,composer-php,packagist,Php,Svn,Composer Php,Packagist,我为我的个人PHP库创建了一个SVN存储库,并在根级别添加了一个composer.json文件: { "name": "myPersonalLibrary/lib", "type": "library", "description": "Light MVC framework for PHP 5.4", "keywords": ["database","mvc"], "homepage": "http://mysit
{
"name": "myPersonalLibrary/lib",
"type": "library",
"description": "Light MVC framework for PHP 5.4",
"keywords": ["database","mvc"],
"homepage": "http://mysite.com",
"license": "MIT",
"require": {
"php": ">=5.3.0",
"mustache/mustache": "dev-master"
},
"autoload": {
"psr-0": {
"bbn": "src"
}
}
}
然后,我使用以下composer.json创建了一个项目:
{
"require": {
"monolog/monolog": "1.0.*",
"zerkalica/php-code-sniffer": "dev-master",
"mustache/mustache": "dev-master",
"myPersonalLibrary/lib": "*"
},
"repositories": [
{
"type": "svn",
"url": "https://mysite.com/svn/myPersonalLibrary",
"branches-path": false,
"tags-path": false,
"trunk-path": "src"
}
]
}
当我尝试更新我的项目时,我得到:在https的任何分支或标记中都找不到有效的composer.json…
我认为问题来自我的文件结构,但我找不到任何关于这方面的文档:
/my_repo
/src
/lib
/api
/db
/file
/html
....
/mvc.php
/obj.php
/composer.json
我试图在packagist.org上发布我的URL,但在给定的URL上找不到有效的/受支持的存储库。尝试调用composer update-v获取更多信息,以获取可使用的可能版本字符串列表 例如,我得到的信息是,获取主干的正确名称是以下配置:
{
"name": "sample/test",
"type": "library",
"version": "0.0.0",
"time" : "2013-04-16",
"description": "Testing ...",
"repositories": [
{
"type": "svn",
"url": "http://framework.zend.com/svn/framework/standard"
}
],
"require": {
"php": ">=5.3.3",
"zendframework/zendframework1" : "dev-trunk"
}
}
使用-v作为参数调用composer,您将得到分支、标记和主干(如果找到)的列表。我不知道是否允许false作为标记和分支的路径
$ composer update -v
Loading composer repositories with package information
Reading composer.json of zendframework/zendframework1 (release-0.1.1)
Skipped tag 0.1.1, no composer file was found
Reading composer.json of zendframework/zendframework1 (release-0.1.2)
Skipped tag 0.1.2, no composer file was found
Reading composer.json of zendframework/zendframework1 (release-0.1.3)
Skipped tag 0.1.3, no composer file was found
....
Reading composer.json of zendframework/zendframework1 (release-1.9.6)
Importing tag 1.9.6 (1.9.6.0)
Reading composer.json of zendframework/zendframework1 (release-1.9.7)
Importing tag 1.9.7 (1.9.7.0)
Reading composer.json of zendframework/zendframework1 (release-1.9.8)
Importing tag 1.9.8 (1.9.8.0)
Reading composer.json of zendframework/zendframework1 (trunk)
Importing branch trunk (dev-trunk)
Reading composer.json of zendframework/zendframework1 (bughuntday)
Skipped branch bughuntday, no composer file was found
Reading composer.json of zendframework/zendframework1 (development-2.0)
Skipped branch development-2.0, no composer file was found
Reading composer.json of zendframework/zendframework1 (pdo_ibm_ids_support)
Skipped branch pdo_ibm_ids_support, no composer file was found
Reading composer.json of zendframework/zendframework1 (release-1.0)
Importing branch release-1.0 (dev-release-1.0)
Reading composer.json of zendframework/zendframework1 (release-1.10)
Importing branch release-1.10 (dev-release-1.10)
....
Reading composer.json of zendframework/zendframework1 (release-1.8)
Importing branch release-1.8 (dev-release-1.8)
Reading composer.json of zendframework/zendframework1 (release-1.9)
Importing branch release-1.9 (dev-release-1.9)
Reading composer.json of zendframework/zendframework1 (rob_allen)
Skipped branch rob_allen, no composer file was found
Reading composer.json of zendframework/zendframework1 (user)
Skipped branch user, no composer file was found
Updating dependencies (including require-dev)
您可以安全地忽略这一行中除此之外的所有内容,这一行告诉您必须将哪些内容设置为请求的版本:
Importing branch trunk (dev-trunk)
如果您将官方推荐的存储库布局与“项目根目录”(正好包含三个子目录:
/trunk
、/branchs
、和/tags
)一起使用,那么这应该适用于您:
对于PHP库,在主干中的项目根中创建composer.json
(并提交它)。例如:
{
"name": "myProject/myLibrary",
"description": "My Personal Library",
"license": "proprietary",
"require": {
"php": ">=5.3"
},
"autoload": {
"classmap": ["src/"]
}
}
假设您的库存储库位于http://svn.example.com/path/to/myLibrary
。然后,布局将是:
/path/to/myLibrary
/trunk
/composer.json
/src
...
/branches
/tags
然后在要使用库的项目中,使用以下内容创建composer.json:
{
"repositories": [
{
"type": "vcs",
"url": "http://svn.example.com/path/to/myLibrary"
}
],
"require": {
"nette/nette": "~2.2",
"myProject/myLibrary": "@dev"
}
}
关键是,如果主干中只有
composer.json
,则使用@dev
作为库的所需版本。从主干创建标记后,就可以开始使用版本号了。例如,如果您svn copy^/trunk^/tags/1.0.0
,那么您可以使用“myProject/myLibrary”:“~1.0”
作为您的版本号。不应该将“composer.json”放在/my_repo/src/?下。composer.json是否有效?没有剩余的逗号什么的?啊,我明白了。composer.json应该在trunk目录中。是的,必须有一个箱子/分装商用的。如果需要分支和标记,每个标记和分支还必须有自己的composer.json。原因很简单,每个版本都是唯一的,可以有不同的需求/依赖关系。在存储库的根目录下只有一个文件不会工作很长时间。@Nabab我最近在旧金山的Symfony Live 12上观看了这段关于Composer的视频。非常有用的提示(例如,他解释了如何拥有自己的私人packagist.com):您是否尝试过使用composer self update
更新composer(永远不知道…)?