2016-06-10 112 views
6

我的目标是有一个composer.json文件致力于为我们的项目库,指定什么主题(S)或插件(S)应该用于该项目,当一个开发商拉下回购他们所需要做的就是运行作曲家安装。我们希望让项目回购中的插件停止,以防止项目回购的膨胀,并且拖延和推进变得缓慢。创建SATIS作曲家私人仓库为WordPress主题和插件

对于标准的WordPress插件,如“通过WordPress.com的Jetpack”,这是罚款,我们将使用https://wpackagist.org/。然而,对于付费的插件和定制内置的无法开源的Premium,我们希望将它们托管在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": "[email protected]: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": "[email protected]: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"] 
     } 
    } 
} 

任何人都可以建议如何让这两个场景一起工作吗?

+0

我做了一件非常类似于你的事情,唯一的区别是我可以看到的是我不使用require-all,我需要它们都是一一的(所以“require”:{然后是一个列表)。这适用于我和私人插件安装与wpackagist的等等...... –

+0

哪个版本的代码是指第一个还是第二个? –

+0

对不起菲尔,第二。而对于参考资料来源)我使用的是标签。 –

回答

0

我想我有一个类似的设置:在本地赛帝回购,我们有一个私人的Git服务器内部的包,并从GitHub所有外部包。

关键是要做好两个步骤:第一步只翻出所有外部包的元数据,而这正是你的版本范围发挥作用,以避免拉扯一切。

第二步将通过扫描所有本地的Git回购和检测所有版本,另外将增加在一步创建的作曲家回购1

有效地你会处理,这将产生两个结果的两个赛帝配置,来自外部软件包的第一个作业的结果将仅获取所有元数据,并且在第二步中,它将像导入本地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内部。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/ 

添加在赛帝“类型=作曲家”库将像任何其他存储库的行为 - 尤其是它会下载有提到的所有包,如果你“规定,所有= true“,所以请小心不要直接添加Packagist或其他任何回购。

另请注意,对外部程序包的“require-dependencies”是正确的,因为您可能不想经历添加要使用的程序包的每个依赖项的麻烦。

如果您的某些付费软件包提供远程回购访问,您可以在外部配置中添加此回购以及访问凭证 - 它应该可以工作。

+0

哦,太好了:-1票没有评论什么没有帮助该用户。 – Sven