举报投诉联系我们 手机版 热门标签 鳄鱼CMS
您的位置:鳄鱼CMS > composer的使用 Composer 使用别名

composer的使用 Composer 使用别名

2023-03-24 01:31 Composer教程

composer的使用 Composer 使用别名

composer的使用

Composer 是 PHP 的一个依赖管理工具,它可以让你声明项目所依赖的代码库,它会在你的项目中为你安装所有依赖的代码库。

Composer 使用一个名为 composer.json 的文件来描述项目所依赖的代码库,这个文件是一个 JSON 格式的文件,里面包含了项目所依赖的代码库、版本号、作者信息等。

{
    "require": {
        "monolog/monolog": "1.0.*"
    }
}

上面是一个 composer.json 文件的例子,它声明了对 monolog/monolog 代码库的依赖,并指定了版本号 1.0.*。

当你在命令行中运行 composer install 命令时,Composer 会根据 composer.json 文件中声明的信息去 Packagist 网站上查找对应版本的 monolog/monolog 代码库,然后将其安装到你的项目中。

Composer 还可以帮助你处理代码库之间存在的依赖关系,如果一个代码库 A 依赖于另外一个代码库 B ,而 B 又依赖 C ,Composer 会帮助你将 A、B、C 都安装到你的项目中。

Composer 使用别名

别名

为什么使用别名?

当你使用 VCS 资源库,你将只会得到类似于这样的版本号:从分支发布的标签获取,它看起来像 2.02.0.x。比较特殊的是,对于你的 master 分支,你会得到一个最新提交的 dev-master 版本。对于你的 bugfix 分支,你会得到一个最新提交的 dev-bugfix 版本。以此类推,这些特殊的版本标识可以用来获取最新的分支源码。

如果你的 master 分支使用标签发布了 1.0 系列版本,即 1.0.11.0.21.0.3 等等,任何依赖它的资源包都可能会使用 1.0.* 这个版本约束。

如果有人想要最新的 dev-master 版本,他们将会碰到一个问题:另一些依赖它的包可能使用了 1.0.* 这个版本约束,因此在 require 这个开发版本时将会产生冲突,因为 dev-master 不符合 1.0.* 的约束。

这时,就可以使用别名。

分支别名

dev-master 指向一个在你 VCS 项目上的主分支。有些用户会想要使用最新的开发版本,这是相当常见的情况。因此,Composer 允许你别名你的 dev-master 版本为一个 1.0.x-dev 的版本号。这是通过在 composer.json 文件中的 extra 下指定 branch-alias 字段来完成的:

{
    "extra": {
        "branch-alias": {
            "dev-master": "1.0.x-dev"
        }
    }
}

此处的分支版本必须以 dev- 开头(不可比较的版本名称),对应的别名必须是可比较的开发版本名称(即,以数字开头,并以 .x-dev 结束)。branch-alias 所引用的分支必须是存在的。对于 dev-master 你需要在 master 分支上提交它。

其结果是,任何人都可以使用 1.0.* 版本约束来得到 dev-master 版本。

为了定义分支别名,你必须是需要别名的包的所有者。如果你想别名一个第三方包,而又不想 fork 它到自己的版本库,可以使用行内别名,我们在接下来就会提到它。

使用行内别名

分支别名是非常适合用于主开发分支的。但为了使用它们,你需要拥有对源码的控制权,并且你需要提交别名修改到你控制的版本库。

当你只想在本地项目中尝试一些依赖包的 bug 修正时,这并不是最好的方式。

出于这个原因,你可以在 requirerequire-dev 字段中直接别名你需要的包。比方说那你找到了 monolog/monolog 的一个 bug。你在 GitHub 上克隆了 Monolog 并在名为 bugfix 的分支上修正了一个问题。现在你想安装这个版本到你的本地项目。

你所使用的 symfony/monolog-bundle require 了 monolog/monolog 并约束了版本 1.*. 因此你需要让你的 dev-bugfix 满足该版本约束。

只要在你项目根目录的 composer.json 文件中加入以下内容:

{
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/you/monolog"
        }
    ],
    "require": {
        "symfony/monolog-bundle": "2.0",
        "monolog/monolog": "dev-bugfix as 1.0.x-dev"
    }
}

它将会在你的 GitHub 上获取 monolog/monologdev-bugfix 版本并将其版本别名为 1.0.x-dev

注意: 如果要对一个资源包使用行内别名,这个别名(as 的右边)必须能够使用版本约束。as 左边的部分在这之后将被丢弃。因此,如果 A 依赖 B 而 B 又依赖 monolog/monolog 且版本约束为 dev-bugfix as 1.0.x-dev,那么安装 A 时将使用 B 的版本约束,并识别为 1.0.x-dev,此时必须真实存在一个“分支别名”或“1.0 系列分支”。否则就必须在 A 的 composer.json 文件中再次定义行内别名。

注意: 应该尽量避免行内别名,特别是对已经发布的包。如果你发现了一个 bug,请尝试将你的修复合并到上游分支。这将避免使用你资源包的用户出现问题。

阅读全文
以上是鳄鱼CMS为你收集整理的composer的使用 Composer 使用别名全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  • 更新模块安装程序 4.4 npm 更新模块

    更新模块安装程序 4.4 npm 更新模块

    2023-03-30

    更新模块使用 npm update 指令。1. 更新模块注意事项更新模块只能往后面版本更新,不能往老的版本回滚更新。比如先安装了 ​loda...

  • variant数据类型 Ant 数据类型

    variant数据类型 Ant 数据类型

    2023-04-30 ApacheAnt教程

    Ant 提供一些预定义的数据类型。不要将术语“数据类型”和那些在编程语言中可用的数据类型相混淆,而是将他们视作一组已经在产品...

  • eclipsesvn解决冲突 SVN 解决冲突

    eclipsesvn解决冲突 SVN 解决冲突

    2023-03-30 SVN教程

    SVN 解决冲突Tom决定给他的工程添加一个 README 文件,于是他创建了这个文件并在其中添加了 TODO 列表。添加完成之后,该文件的...

  • git标签有什么用 Git 标签

    git标签有什么用 Git 标签

    2023-05-25 Git教程

    如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用 git tag 给它打上标签。比如说,我们想为我们的 cc ...

  • idea 代码折叠 IDEA 自定义代码折叠

    idea 代码折叠 IDEA 自定义代码折叠

    2023-05-05

    常用设置如上图 Gif 所示,我们选中要被折叠的代码按 ​​Ctrl + Alt + T ​快捷键​,选择自定义折叠代码区域功能。...

© 2024 鳄鱼CMS eyucms.com 版权所有 联系我们