为 wordpress 主题和插件创建满足作曲家的私有存储库
Posted
技术标签:
【中文标题】为 wordpress 主题和插件创建满足作曲家的私有存储库【英文标题】:Creating satis composer private repository for wordpress themes and plugins 【发布时间】:2016-10-11 09:06:10 【问题描述】:我的目标是将composer.json
文件提交到我们的项目存储库,该文件指定应该为该项目使用哪些主题或插件,并且当开发人员拉下存储库时,他们需要做的就是运行作曲家安装。我们希望将插件排除在项目 repo 之外,以阻止项目 repo 的膨胀以及拉取和推送变得缓慢。
对于标准的 wordpress 插件,例如“WordPress.com 的 Jetpack”,这很好,因为我们将使用 https://wpackagist.org/。但是,对于无法开源的高级插件和内部定制插件,我们希望将它们托管在 Private Composer 存储库中。
因为我们将有这些插件的多个版本,所以我希望所有版本都显示,例如 1.1、1.2、1.3,以便开发人员可以在 composer.json 中指定需要哪个版本,例如如果未来的版本出现问题,我们需要回滚到以前的版本。
我已经阅读了设置 Satis 私有存储库的基础知识,我已经这样做了,但是我无法让它循环遍历版本的 git 标签并指定它是一个 Wordpress 插件并将其安装在正确的位置.
这是我第一次尝试获取所有带有 git 标记的版本:
"name": "Private Repository",
"homepage": "http://packages.privaterepo.com",
"repositories": [
"type": "vcs",
"url": "git@bitbucket.org:companyname/project.git"
],
"require-all": true
这是我必须指定版本但将其安装在正确的 Wordpress 插件位置的地方:
"name": "Private Repository",
"homepage": "http://packages.privaterepo.com",
"repositories": [
"type": "package",
"package":
"name": "company/project",
"description": "WordPress Plugin",
"version": "1.0",
"source":
"type": "git",
"url": "git@bitbucket.org:company/project.git",
"reference": "origin/master"
,
"type": "wordpress-plugin",
"require":
"php": ">=5.3.2",
"composer/installers": "*"
],
"require-all": true,
"require-dependencies": true,
"extra":
"installer-paths":
"wp-content/plugins/$name/": ["type:wordpress-plugin"]
谁能告诉我如何让这两个场景一起工作?
【问题讨论】:
我做的事情和你非常相似,我能看到的唯一区别是我不使用 require-all 我一个一个地要求它们(所以“要求”: 然后是一个列表) .这对我来说很好,私人插件与 wpackagist 等一起安装...... 你指的是第一个还是第二个版本的代码? 对不起菲尔,第二个。而对于参考源下)我正在使用标签。 谢谢西蒙认为我在正确的轨道上,你能给我一个你在源代码下提到的标签的例子。我认为这里唯一的问题是我需要为每个插件的每个版本更新 satis.json 文件,对于像我这样的大型团队来说,这将成为我试图避免的日常任务。相反,我只想让它自动读取 Git 标签。如果这是您正在做的事情,请发送示例。 啊,我在一个大的作曲家文件中为每个插件获取了特定的标签。所以不确定它实际上对你有什么用处。我的文件用于一个网站,并引入了多个插件等...我认为您所做的与此不同。 【参考方案1】:我想我有一个类似的设置:在本地 Satis 存储库中,我们既有来自私有 Git 服务器的内部包,也有来自 Github 的所有外部包。
诀窍是做两步:第一步只拉取所有外部包的元数据,这是你的版本范围发挥作用的地方,以避免拉取所有东西。
第二步将扫描所有本地 Git 存储库并检测所有版本,另外将添加在第 1 步中创建的 Composer 存储库。
实际上,您将处理两个将创建两个结果的 Satis 配置,外部包的第一个作业的结果将仅获取所有元数据,并且在第二步中它被导入和使用,就像本地 Git 存储库一样,并配置第二步以扫描“所有”版本并可能从中创建 ZIP 文件将为您可能需要的每个包创建一个不错的本地备份副本。
或者换句话说:
satis-external.json
"repositories": [
"type":"composer",
"url":"https://packagist.org"
],
"require":
"any/package":">=2.0"
"output-html": false,
"require-dependencies": true
运行它:
php -dmemory_limit=2G satis/bin/satis build satis-external.json external/
satis-internal.json
"repositories": [
"type": "composer",
"url": "http://url/from/external/above"
,
"type": "vcs",
"url": "ssh://internal/gitrepo.git"
],
"require-all": true,
"archive":
"directory": "dist",
"format": "zip",
"prefix-url": "https://whatever/youneed",
"skip-dev": true
运行这个
php -dmemory_limit=2G satis/bin/satis build satis-internal.json internal/
在 Satis 中添加一个“type=composer”存储库将使其行为与任何其他存储库一样 - 特别是如果您“require-all=true”,它将下载其中提到的所有包,因此请注意不要添加 Packagist 或任何其他直接回购。
另请注意,“require-dependencies”对于外部包来说是正确的,因为您可能不想经历添加要使用的包的每个依赖项的麻烦。
如果您的某些付费包提供远程存储库访问,您可以将此存储库与访问凭据一起添加到外部配置中 - 它应该可以工作。
【讨论】:
哦,太好了:-1 票,没有评论对用户没有帮助的内容。以上是关于为 wordpress 主题和插件创建满足作曲家的私有存储库的主要内容,如果未能解决你的问题,请参考以下文章
自定义 CSS 以删除 Wordpress 页面上的特定边距