raybog / magento-core-composer-installer
管理 Magento 核心的 composer 插件
Requires
- php: ^5.5 | ^7.0
- composer-plugin-api: ~1.0
Requires (Dev)
- composer/composer: ^1.3@dev
- mikey179/vfsstream: ~1.4
- phpunit/phpunit: ~4.3
- squizlabs/php_codesniffer: ~1.5
This package is not auto-updated.
Last update: 2024-09-29 03:25:56 UTC
README
用于管理 Magento 核心的 Composer 插件
此工具允许您使用 Composer 在项目中管理 Magento 核心。
优势
- 将 Magento 排除在项目仓库之外
- 允许轻松升级到新的 Magento 版本
您的项目需要此工具并且需要特定版本的 Magento。安装 Magento 软件包将触发在 Magento 根目录下的安装。将自动创建一个 .gitignore 文件,其中包含 Magento 核心软件包中的所有文件(其中一些被分组,后面会详细介绍)。
当删除软件包时,无论是使用 composer remove magento/magento 还是手动从 composer.json 文件中删除并运行 composer update,将被删除的 Magento 版本中存在的所有文件将从您的 magento-root-dir 文件夹中删除。如果这些文件夹中存在自定义文件,则不会删除这些文件。
这允许您在项目中安装和删除 Magento 核心,而无需将其提交,因为 .gitignore 将自动更新。更进一步,在项目根目录中,您可以忽略 magento-root-dir 中的 .gitignore。这意味着您可以在不显示任何未跟踪文件的情况下安装、更新和删除 Magento 核心。
现在更新 Magento 核心非常简单,只需更改您的 require 为 "magento/magento": 1.10.0 或最新版本,然后运行 composer update!
兼容性
此工具与任何 PHP >= 5.3 版本的 PHP 都兼容。它使用 Travis 自动在 PHP 5.3、5.4、5.5 和 HHVM 版本上进行测试。
安装
$ 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" : "~1.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,则每次部署时都会被清除。
示例配置
{
...
"extra" {
"magento-root-dir": "htdocs",
"magento-core-deploy" : {
"excludes": [
".htaccess"
],
"ignore-directories": [
"lib/Zend"
],
"git-ignore-append": false
}
}
}
上述配置将安装核心包中的所有内容,除了文件 .htaccess,它将所有位于 lib\Zend 下的文件分组到 htdocs\.gitignore 文件中。并且每次更新或删除 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