Php 如何管理依赖项库?
如何管理依赖项库?我将我的项目分为一组库,因为这些库也用于其他几个项目中。开始时,我将它们作为Git repo,并使用Git子模块来管理它们。很快它就变成了一场噩梦。一旦我做了一些更改,我就必须在子模块中提交,这很乏味,需要大量的工作Php 如何管理依赖项库?,php,git,composer-php,sylius,Php,Git,Composer Php,Sylius,如何管理依赖项库?我将我的项目分为一组库,因为这些库也用于其他几个项目中。开始时,我将它们作为Git repo,并使用Git子模块来管理它们。很快它就变成了一场噩梦。一旦我做了一些更改,我就必须在子模块中提交,这很乏味,需要大量的工作 我想知道Sylius是如何做到这一点的,他们将每个包作为Git和Packagist repo保存,但他们不使用Git或Composer来管理自己的包。最好的方法是使用Composer来管理依赖项并自动加载所有类 要实现这一点,第一步是准备好所有的组件,以便comp
我想知道Sylius是如何做到这一点的,他们将每个包作为Git和Packagist repo保存,但他们不使用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.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.json
部分),在哪个版本中(name
或标签号,如果有的话)dev master
part:除非依赖项在packagist()上,否则必须添加依赖项的存储库(可能是github、bitbucket等)。它与您可以在repo的克隆部分找到的url相同repositories
composer安装
应将依赖项加载到供应商
目录中,并加载命名空间中可用的所有类
您可以查看文档以了解更多选项:
这张有用的备忘单
我在注释(我无法添加注释)中看到,您希望将主应用程序中所做的所有更改提交到所有捆绑包
您可以查看composer的无api选项:
"repositories": [
{
"type": "git",
"no-api": true,
"url": "https://github.com/the-git-url-of-your-project1"
}
]
当您安装composer时,composer将执行git克隆
不使用composer的另一个解决方案是使用git子模块您的库是否公开可用?因此,请使用composer(正如您标记问题一样)似乎是这个问题的重复,尽管这个问题被标记为c#,但问题是一样的。如果你有很多专有库,那么看看私有的composer存储库可能是值得的。有两个这样的存储库:@olibiaz,谢谢,composer无法解决这个问题,我们仍然必须始终提交更改,我认为最简单的方法应该是,不要使用git或composer来管理我们自己的库,我们将其保留在项目中,一个工具从库中提取composer.json,并将其作为git或composer存储库。@olibiaz,@Christiaan,我想知道Sylius和Drupal是如何做到这一点的,每个库都是git repo,但他们将其更改作为整个项目而不是单个repo提交。