【问题标题】:Composer create-project. Point at specific branch作曲家创建项目。指向特定分支
【发布时间】:2016-07-16 00:32:48
【问题描述】:

我创建了 Laravel 存储库的一个分支,对其进行了一些更改,并将作曲家文件中的名称重命名为 votemike/laravel。我现在想基于这个 repo 创建一个新项目,所以我打电话:

composer create-project --prefer-dist votemike/laravel --repository='{"type":"vcs","url":"https://github.com/votemike/laravel"}' testing

但是,我的终端随后会弹出说Reading composer.json of votemike/laravel (v5.2.23),它会逐渐递减。然后生成的项目似乎是一个普通的 Laravel 项目,没有我的更改。 然后我尝试了:

composer create-project --prefer-dist votemike/laravel:master --repository='{"type":"vcs","url":"https://github.com/votemike/laravel"}' testing

但这似乎也不起作用。

谁能帮我解决我需要运行的命令?我认为我的计算机不应该读取所​​有版本的作曲家文件。并且命令可以简化吗?

谢谢,

迈克尔

【问题讨论】:

    标签: php git composer-php


    【解决方案1】:

    更新:

    由于这是一个自定义 Composer 项目,我想知道您是否可以使用我写的博客文章中提到的自定义创建项目脚本:Composer create project script

    您只需将其放在项目的根目录,对其进行编辑以匹配并运行它 - 它会为您创建一个项目。

    我用它来测试我自己的 Composer 项目,我认为它可以让您轻松创建自定义 Laravel 项目,而无需与 Composer 争夺版本。

    https://gist.github.com/jacmoe/e9e8ed5fd45affb893a8

    编辑:

    你需要做的是编辑这个:

    BRANCH_NAME=${1:-master}
    DEST_DIR=${2:-~/Desktop/newapp}
    PACKAGE_NAME=vendor/package
    

    您可以保留第一个 (BRANCH_NAME) 原样,但请更改 DEST_DIRPACKAGE_NAME

    PACKAGE_NAME 必须与修改后的 Laravel 源目录的 composer.json 的包名匹配。

    通知

    你可以从你的 Laravel 分支的本地克隆副本中使用它——它在本地工作——它不会尝试在 Github 或 Packagist 上找到任何东西。它使用您所在的目录(工作目录)并将使用它来创建项目 - 您可以选择脚本将在何处创建它。


    原答案:

    在我的头顶:

    composer create-project --prefer-dist --stability=dev votemike/laravel
    

    或者,如果这不起作用,试试这个:

    composer create-project --prefer-dist --stability=dev votemike/laravel:dev-master
    

    或者,代替 dev-master ,使用 @dev - 或 dev-branch ...

    不过,第一个命令应该做到这一点。

    你的克隆项目有标签吗?如果没有,那就可以解释为什么 Composer 会采取行动。告诉它使用 dev-master 会解决这个问题,因为 Composer 默认只会拉取版本(major.minor.revision 方案之后的标签)。

    编辑:

    在我的一个项目中,我正在使用包的主分支,在我的composer.json 中使用以下条目:

    "jacmoe/yii2-tale-jade": "dev-master",
    

    如何将包放入 composer.json 取决于您 - 手动或使用正确版本(如 dev-master)要求它

    这要求您尝试要求的项目的 composer.json 未使用 version 字段 - 如果确实有,请将其删除。

    【讨论】:

    • 该项目有来自原始 Laravel repo 的标签,我没有再添加了。这是否意味着我每次推送时都需要创建一个新标签?有没有办法只使用master的HEAD?创建一个具有特定名称的新分支会有所帮助吗?
    • --stability=dev 应该这样做。否则在包名中添加:@dev:dev-master :)
    • 运行您的建议会导致错误Could not find package votemike/laravel with version @dev. 我不明白在我试图从中创建项目的存储库中定义稳定性或 dev-master 的位置。我还需要调整我的作曲家文件吗? github.com/votemike/laravel/blob/…
    • 我将用不同的方法更新我的答案:)
    • 在开发大师的帮助下,我选择了composer create-project votemike/laravel:dev-master --repository='{"type":"vcs","url":"https://github.com/votemike/laravel"}' testing。谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-01-27
    • 2012-07-05
    • 2019-01-16
    • 2014-05-21
    • 2014-11-10
    • 2015-12-24
    • 2014-01-06
    • 2017-01-07
    相关资源
    最近更新 更多