aydin-hassan/magento-core-composer-installer

用于管理 Magento 核心的 Composer 插件

2.1.0 2021-05-04 20:16 UTC

This package is auto-updated.

Last update: 2024-09-11 08:23:37 UTC


README

Build Status Build Status Latest Stable Version Latest Unstable Version

用于管理 Magento 核心的 Composer 插件

此工具允许您使用 Composer 在项目中管理 Magento 核心组件。

优点

  • 将 Magento 排除在项目仓库之外
  • 允许轻松升级到新的 Magento 版本

如果您的项目中需要特定版本的 Magento,则需要此工具。首次安装 Magento 包时,将在 Magento 根目录中触发安装。将自动创建一个包含 Magento 核心包中所有文件的 .gitignore 文件(其中一些已分组,稍后会详细介绍)。

当删除一个包时,无论是使用 composer remove magento/magento 命令还是手动从 composer.json 文件中删除并运行 composer update,您要删除的 Magento 版本中所有文件都将从 magento-root-dir 文件夹中删除。如果这些文件夹中有自定义文件,则不会删除。

这允许您在项目中安装和删除 Magento 核心组件,而无需将其提交,因为 .gitignore 文件会自动更新。此外,在项目根目录中,您可以忽略 magento-root-dir 中的 .gitignore 文件。这意味着您可以安装、更新和删除 Magento 核心组件,而您的仓库中不会显示任何未跟踪的文件。

现在更新 Magento 核心组件变得简单,只需将您的需求更改为 "magento/magento": 1.10.0 或最新版本,然后运行 composer update 即可!

兼容性

此工具与任何 PHP >= 7.0 版本兼容。它将自动使用 Travis 在 PHP 7.0、7.1、7.2、7.3、7.4 版本上进行测试。

安装

$ cd magento-project
$ composer require aydin-hassan/magento-core-composer-installer

将安装最新稳定版本。

为了使安装程序真正起作用,您还需要要求一个核心 Magento 包。这应该是一个包含根目录中 composer.json 文件的 Magento 发布版。它应该这样定义

{
    "name": "magento/magento",
    "description": "Magento Mirror",
    "type": "magento-core"
}

有关示例,请参阅 此处。如果您愿意,可以使用此存储库进行您的 Magento CE 构建。

您可以为托管不同版本创建自己的公共或私有 Magento 存储库。您应该将每个版本标记为其实际版本。type 键非常重要。Magento Core Composer Installer 只会安装类型为 magento-core 的包。

有关如何创建自己的 Magento 源代码存储库的说明,请参阅 此处

要使用 Magento 包,您必须将其添加到项目 composer.json 文件中的存储库

"repositories": [
    {
        "type": "vcs",
        "url": "git@github.com:AydinHassan/magento-community.git"
    }
],

然后您可以这样做

$ composer require "magento/magento:1.9.1.0"

您的项目 composer.json 应该看起来像这样

{
    "name": "somevendor/someproject",
    "description": "Magento build for ...",
    "require-dev": {
        "phpunit/phpunit": "~4.4"
    },
    "require": {
        "aydin-hassan/magento-core-composer-installer" : "^2.0",
        "magento/magento" : "1.9.1.0"
    },
    "authors": [
        {
            "name": "Aydin Hassan",
            "email": "aydin@hotmail.co.uk"
        }
    ],
    "repositories": [
        {
            "type": "vcs",
            "url": "git@github.com:AydinHassan/magento-community.git"
        }
    ],
    "extra": {
        "magento-root-dir": "htdocs"
    }
}

请注意 magento-root-dir,这用于指定您希望 Magento 安装的位置。

配置

配置可以在根 composer.json 文件中的 extra 键下的 magento-core-deploy 下提供

可用的配置

  • excludes - 一个数组,包含在安装核心时不要复制的文件,如果需要本地覆盖或跟踪 .htaccess,则很有用。
  • ignore-directories - 一个数组,用于将忽略文件夹分组,以使核心 .gitignore 文件更小。
  • git-ignore-append - 默认为 true。是否将内容附加到 magento-root-dir 文件夹中的 .gitignore。如果为 false,则每次部署时都会清除。
  • git-ignore-enable - 默认为 true。将该值设置为 false 将阻止对 magento-root-dir 文件夹中的 .gitignore 文件执行任何操作。

示例配置

{
     ...
     "extra" {
         "magento-root-dir": "htdocs",
         "magento-core-deploy" : {
            "excludes": [ 
                ".htaccess"
            ],
            "ignore-directories": [
                "lib/Zend"
            ],
            "git-ignore-append": false
         }
     }
}

上述配置将从核心包安装所有内容,除了文件 .htaccess,它将在 htdocs\.gitignore 文件中将 lib\Zend 下的所有文件分组。并且每次更新或删除 Magento 时都会清除 htdocs\.gitignore

排除项

使用此功能可以排除某些文件和文件夹从核心复制到您的根目录。如果您包含的排除路径实际上是一个文件夹,则该文件夹中的所有内容都将被排除。

排除 lib 中的所有文件

{
     ...
     "extra" {
         "magento-root-dir": "htdocs",
         "magento-core-deploy" : {
            "excludes": [ 
                "lib"
            ]
         }
     }
}

仅排除 app/etc/local.xml

{
     ...
     "extra" {
         "magento-root-dir": "htdocs",
         "magento-core-deploy" : {
            "excludes": [ 
                "app/etc/local.xml"
            ]
         }
     }
}

忽略目录

这一点需要更多的解释。为 Magento 中的每个文件生成一个 .gitignore 文件会导致文件超过 10,000 行。调查发现,这会使像 git status 这样的 git 命令慢得多。一些问题需要花费我 14 秒的时间。

为了解决这个问题,任何在默认文件夹集中的文件将不会被添加到 .gitignore 中,而是只添加文件夹,这大大减少了 .gitignore 的大小。默认忽略的文件夹列表可以在这里找到。

如果您需要提交这些目录内的文件,则可以通过设置上述的 ignore-directories 键来覆盖此列表。您的列表将不会合并,而是会被使用。这是如果您想移除一个忽略目录的情况。

创建核心包

我提供了一个脚本,允许您轻松管理 Magento 的镜像。它适用于社区和企业。以下说明如何创建核心包。

添加新的 Magento 版本脚本:https://gist.github.com/AydinHassan/6ed0bf2219ea0f122402

  1. 创建一个仓库或克隆现有的一个: cd && mkdir magento-mirror && git init
  2. 下载一个 Magento 版本并解压: cd && tar -xzf magento.tar.gz
  3. 将其下载到您的家目录: cd && curl https://gist.githubusercontent.com/AydinHassan/6ed0bf2219ea0f122402/raw/28d1e629947ef4e92082914172c5000a417d87c5/add-magento-version.php -o add-magento-version.php
  4. 使用您的仓库位置和解压的 Magento 代码运行它: php add-magento-version.php ~/magento-mirror ~/magento
  5. 新版本将被提交并标记。现在您可以将其推送到远程。

该脚本将从源中确定 Magento 的版本和版本。它将根据这些版本创建分支和标签。

分支是主.次

因此,1.9.0.01.9.0.11.9.10 都在 1.9 分支中

1.10.0.0 将创建一个新的 1.10 分支。

1.10 将从 1.9 分支创建,这样您就可以轻松地比较它们

运行测试

$ git clone git@github.com:AydinHassan/magento-core-composer-installer.git
$ cd magento-core-composer-installer
$ composer install
$ ./vendor/bin/phpunit