为 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 页面上的特定边距

在 wordpress 插件中使用作曲家包

wordpress 主题安装失败

为 WordPress 插件存储变量而不创建新表

如何使用“主题我的登录”插件在 wordpress 登录表单中自动填写字段?

wordpress安装插件和主题