Composer / WordPress:应该或不应该提交wp-content目录

时间:2015-11-20 08:59:20

标签: php wordpress git dependencies composer-php

所以我最近开始使用基于this教程的WordPress编写器。

这是我的composer.json文件:

{
    "repositories": [
        {
            "type": "package",
            "package": {
                "name": "wordpress",
                "type": "webroot",
                "version": "4.3",
                "dist": {
                    "type": "zip",
                    "url": "https://github.com/WordPress/WordPress/archive/4.3.zip"
                },
                "require" : {
                    "fancyguy/webroot-installer": "1.0.0"
                }
            }
        }
    ],
    "require": {
        "wordpress": "4.*",
        "fancyguy/webroot-installer": "1.0.0"
    },
    "extra": {
        "webroot-dir": "public/wp",
        "webroot-package": "wordpress"
    }
}

它工作正常,我有这个文件夹结构:

enter image description here

正如教程中提到的,我将index.phpwp-config.phpwp-content目录复制到了wp目录之外,并替换了路径。

到目前为止,一切都很完美:

  

关于使用源代码管理工具进行内务管理。您要忽略composer.phar文件和public / wp目录。   其他所有东西都可以被提交和推送。

所以看起来除了public/wp文件夹之外,所有内容都可以被提交和推送。 (包括wp-content文件夹)

这是我不明白的事情。我们必须提交/推送wp-content目录,因为它有一个不同的位置,但同时这个wp-content文件夹包含pluginsthemes文件夹我们的插件和主题将使用不应该提交/推送的作曲家添加?。

插件和主题也将使用composer添加到开发环境中,因此我们不能提交它们,但它们位于wp-content目录中应该提交?

another类似教程中,wp-content被设置到.gitignore文件中,这意味着它不应该被提交/推送。但是,如果是这样的话,谁将移动(以及如何)开发环境中的wp-contentwp目录。

有人可以澄清这方面吗?

2 个答案:

答案 0 :(得分:1)

wp-content拆分为单独的目录非常棒。

我个人只提交wp-content中属于当前项目的项目。想到这一点的另一种方法是提交任何 not 与Composer一起添加。

例如,您可能正在处理具有父主题的网站,您正在使用Composer并保留未经修改的网站,以及您正在进行更改的子主题。

在此示例中,应提交子主题并忽略父主题,因为您只更改子主题中的代码。

.gitignore文件如下所示:

# Ignore everything in wp-content
wp-content/*

# Do not ignore the themes directory. This is needed to add the child theme (below)
!wp-content/themes

# Ignore all of the themes directory contents, including the parent theme
wp-content/themes/*

# Do not ignore the child theme
!wp-content/themes/child-theme/

我通常也会使用插件做同样的事情。由Composer引入的任何插件都会被忽略,但是特定于当前项目的插件(不会在其他地方使用)将被提交。

希望这有帮助。

答案 1 :(得分:0)

这个想法是:生成的任何东西都不应该被版本化。

  

谁将移动(以及如何)开发环境中的wp-contentwp目录。

这是部署问题,是发布管理的一部分 这意味着服务器端的post-receive挂钩将负责根据新推送的源生成正确的内容,并在其内容刷新后移动/复制wp-content文件夹。

一般要点是:人们通常将版本控制与部署区分开来。移动内容是在部署期间,在发布管理期间完成的,例如通过钩子将正确的资源移动到正确的位置。