【发布时间】:2021-10-10 21:04:25
【问题描述】:
我想使用 Composer 来管理我自己在工作中使用的私有库,并将它们用于工作中的 Intranet 项目。
根据公司规则不将代码发布到 packagist 或 github;可以这么说,所有代码都将保留在我们自己的围墙内。
我已经弄清楚如何将库单独包含到我的 Intranet Web 应用程序中:
网页应用的composer.json
{
"name": "myapp/appname",
"description": "app that uses some of my libraries",
"require": {
"tmorton/dataaccessobjects": "^1.0.0"
},
"repositories": [
{
"type":"vcs",
"url":"//path/to/library"
}
]
}
我的问题是这个数据访问对象的集合依赖于我的 crud 库。
所以看来我应该可以requiredataaccessobjects库中composer.json中的crud库了:
composer.json 用于数据访问对象
{
"name": "tmorton/dataaccessobjects",
"description": "Data Access Objects for a set of specific tables",
"type": "library",
"license": "proprietary",
"repositories": [
{
"type": "path",
"url":"//path/to/crud/library"
}
],
"minimum-stability": "dev",
"require": {
"tmorton/crud": "^2.0.0"
}
}
我的 DAO 对象被克隆到 app/vendor 中,但 Crud 没有被引入。
我看到的所有文档都谈到了发布到第三方位置,但没有提到来自本地来源。
我当然可以这样做;但它破坏了管理依赖项的整个想法(我不应该知道此时需要哪个版本的 crud)
网页应用的composer.json
{
"name": "myapp/appname",
"description": "app that uses some of my libraries",
"require": {
"tmorton/dataaccessobjects": "^1.0.0",
"tmorton/crud": "^2.0.0"
},
"repositories": [
{
"type":"vcs",
"url":"//path/to/dao/library"
},
{
"type": "path",
"url":"//path/to/crud/library"
}
]
}
我希望有人能补充一些我似乎遗漏的概念。
suggested question 的答案似乎表明type: "package" 不起作用。我没有使用type: "package"。
包类型用于非作曲家依赖。如果使用这种类型,Composer 甚至不会在已定义的包源中查找 composer.json 文件,您需要在项目 composer.json 中的包声明中包含有关包的所有必需信息
我收集到的是,无论您做什么,作曲家 - 本身 - 都不会费心查找包含项目的依赖关系。在抓取 3rd 方的东西时它会以某种方式起作用,但显然还有其他东西在做这项工作。我猜是主机本身?
【问题讨论】:
-
最好的方法是在 Intranet 中使用私有 composer 存储库 - 例如 satis。 github.com/composer/satis
-
你在用git吗?你当然应该这样做;)
-
我一定会调查满意的。除了暗示作曲家没有能力做我想让它做的事情之外,其他 cmets 真的没有说明我所缺少的东西。我正在努力克服的一个结论。
标签: composer-php