aydin-hassan / magento-core-composer-installer
用于管理 Magento 核心的 Composer 插件
Requires
- php: ^8.0
- composer-plugin-api: ^2.0
Requires (Dev)
- composer/composer: ^2.0
- mikey179/vfsstream: ~1.4
- phpunit/phpunit: ^9.0
- squizlabs/php_codesniffer: ^3.0
README
用于管理 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
- 创建一个仓库或克隆现有的一个:
cd && mkdir magento-mirror && git init
- 下载一个 Magento 版本并解压:
cd && tar -xzf magento.tar.gz
- 将其下载到您的家目录:
cd && curl https://gist.githubusercontent.com/AydinHassan/6ed0bf2219ea0f122402/raw/28d1e629947ef4e92082914172c5000a417d87c5/add-magento-version.php -o add-magento-version.php
- 使用您的仓库位置和解压的 Magento 代码运行它:
php add-magento-version.php ~/magento-mirror ~/magento
- 新版本将被提交并标记。现在您可以将其推送到远程。
该脚本将从源中确定 Magento 的版本和版本。它将根据这些版本创建分支和标签。
分支是主.次
因此,1.9.0.0
、1.9.0.1
和 1.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