繁体   English   中英

你如何管理你的依赖库?

[英]How do you manage your dependency libraries?

你如何管理你的依赖库? 我将我的项目分成一堆库,因为这些库也用于其他几个项目。 一开始,我将它们每个都作为 Git 存储库,并使用 Git 子模块来管理它们。 很快就变成了噩梦。 一旦我做了一些改变,我必须在子模块中提交,这很乏味,需要大量的工作。

我想知道 Sylius 是如何做到这一点的,他们将每个包保存为 Git 和 Packagist 存储库,但他们不使用 Git 或 Composer 来管理自己的包。

最好的方法是使用 composer 来管理您的依赖项并自动加载您的所有类。

实现这一目标的第一步是准备好所有组件以供 composer 使用,因此您的每个依赖项都将在根目录下拥有自己的composer.json 基本配置可能如下所示:

{
  "name": "your/component-name",
  "description": "your description",
  "license": "proprietary",
  "authors": [
    {
      "name": "Your name",
      "email": "you@mail"
    }
  ],
  "autoload": {
    "psr-4": {
      "Your\\Complete\\Namespace": "src/"
    }
  },
  ... etc ...
}
  • name字段是您将用于在主项目中加载依赖项的名称
  • autoload部分非常重要,因为它将确定所有类基本命名空间 当您在主项目中导入依赖项时,您将通过此命名空间访问您的组件类。

当您的依赖项准备就绪时,您将准备主项目以通过 Composer 加载它们。 所以基本上,这个项目的composer.json结构看起来与之前的完全一样,有更多的选项来加载你的依赖项

{
  "name": "your/project-name",
  "description": "your description",
  "license": "proprietary",
  "authors": [
    {
      "name": "Your name",
      "email": "you@mail"
    }
  ],
  "autoload": {
    "psr-4": {
      "Your\\Project\\Namespace": "src/"
    }
  },
  "require": {
    "your/dependency1-name" : "dev-master",
    "your/dependency2-name" : "dev-master",
   ....
  },
  "repositories": [
    {
      "type": "git",
      "url": "https://github.com/the-git-url-of-your-project1"
    },
    {
      "type": "git",
      "url": "https://github.com/the-git-url-of-your-project2"
    }
  ]
  ... etc ...
}
  • require部分的每一行都将允许您配置要加载的所有依赖项(它是依赖项composer.jsonname部分)在哪个版本( dev-master或标签的数量,如果您有的话)。
  • repositories部分:除非您的依赖项在 packagist ( https://packagist.org/ ) 上,否则您必须添加依赖项的存储库(可能是 github、bitbucket 等...)。 它与您可以在存储库的克隆部分中找到的 URL 相同。

这是为了使用 Composer 管理依赖项而必须遵循的步骤。 显然,您确实需要检查文档以使其适应您的需求,因为它只是您可以使用 composer 做什么的基本概述。

一切准备就绪后, composer install应该将您的依赖项加载到vendor目录中,并在其命名空间中加载所有可用的类。

您可以查看文档以获取更多选项:

https://getcomposer.org/doc/

还有这个有用的备忘单

http://composer.json.jolicode.com/

我在评论中看到(我无法添加评论),您希望将主应用程序中所做的所有更改提交到所有包。

可以看看composer的no-api选项:

  "repositories": [
    {
      "type": "git",
      "no-api": true,
      "url": "https://github.com/the-git-url-of-your-project1"
    }
  ]

当你进行 composer install 时,composer 会做一个 git clone

另一个不使用 composer 的解决方案是使用 git submodules

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM