6

我需要composer.js在项目根目录中使用 Composer 来管理依赖项(normalize.css 和其他)。我最终定义了一个包,但我有几个问题:

{
    "require": {
        "twbs/bootstrap": "~3.0",
        "fortawesome/font-awesome": "~3.2",
        "necolas/normalize.css": "*"
    },
    "repositories": [
        {
            "type":"package",
            "package": {
                "name": "necolas/normalize.css",
                "version":"2",
                "source": {
                    "url": "https://github.com/necolas/normalize.css.git",
                    "type": "git",
                    "reference":"master"
                }
            }
        }
    ]
}

我的包中的是否version指的是 GitHub 存储库中的版本(标签)?如果是,我该如何指定 ie ~2.1(我得到无效的包定义)或可用的最新标签?

因为necolas/normalize.css我想始终获得最新版本的 master 分支。

4

2 回答 2

6

这是我的解决方案:

出于测试目的,我有这个 composer.json 文件:

{
    "name": "mycompagny/composer-project",
    "repositories": [
        {
            "type": "vcs",
            "url": "http://localhost/git/test.composer.dep.git"
        }
    ],
    "require" : {
        "mycompagny/test.composer.dep": "dev-master#v2.0.0"
    },
    "minimum-stability": "dev"
}

在 require 键中,将 #youversion 放在 dev-master 之后以指向您的 git 标签“yourversion”。

# 之后的标签在这里充当提交。(根据:https ://getcomposer.org/doc/04-schema.md#package-links )

于 2014-10-20T15:45:49.617 回答
5

“我的包中的版本是否指的是发行版”

不,package条目中的版本定义了 Composer 应该引用此包的版本号。

version不幸的是,即使它们来自 Git,也需要显式设置包。

“我如何指定 ie ~2.1(我得到无效的包定义)或可用的最新标签?”

看起来你不能。包中列出的版本必须是实际的版本号,而不是版本号范围,并且无法从 Git 中获取标签,这很糟糕。

如果您要将使用包存储库替换为使用 zipball Artifact 包,则在从 Github 下载 zipball 后添加带有相关信息的 composer.json 将非常容易。

我已将其添加为https://github.com/Danack/IntahwebzRepo的概念证明,这是一个从 Github 下载 zipball 的简单脚本,然后将版本条目添加到他们的 composer.json,或完全生成如果他们还没有 composer.json。

一旦下载并修改了 zipball,然后在 Satis(又名 Packagist)存储库中使用它们。

于 2013-10-08T18:58:56.300 回答