poposki / modcom
将modman转换为Composer项目的转换器
Requires
- php: >=5.5.16
- symfony/config: ~3.0
- symfony/console: ~3.0
- symfony/filesystem: ~3.0
- symfony/serializer: ~3.0
- symfony/yaml: ~3.0
This package is not auto-updated.
Last update: 2024-09-14 19:25:43 UTC
README
开发分享如何将modman项目转换为Composer项目。这并不代表是生产就绪的代码(嗯..你仍然可以在你的项目中使用它,但这只是意味着我不保证使用它)。
本次演讲的目的是展示将modman项目(在本例中为Magento项目)快速转换为Composer项目的快捷方式。基本上,在大多数情况下,你应该能够运行转换命令,然后运行 composer install
。当然,转换后,如果你想上线,需要清理你的composer文件并使其更好(请参阅下文),但重点是转换完成后可以立即运行 composer install
。
安装
composer require poposki/modcom "~0.1"
配置
为了准备项目进行转换,你需要一个小的配置文件,你可以从 app/config/config.yml
复制它。这是工具的默认配置文件,但你的项目特定配置文件应位于你想要转换的项目根目录下,并命名为 modcom.yml
。大部分的配置设置都是不言自明的,但我已经解释了其中的一些。你不需要在配置中保留任何内容。
# Project specific config
project:
source_dir: 'src'
vendor: 'Vendor'
name: 'vendor/project'
description: 'Here goes some fancy description'
homepage: 'http://www.example.com'
license: ''
packages:
php: '>=5.5'
magento-hackathon/magento-composer-installer: '~3.0'
repositories:
"https://packages.firegento.com": 'composer'
# Local module specific config
module:
homepage: 'http://www.example.com'
license: ''
packages:
php: '>=5.5'
repositories: []
# Modman config
modman:
dir: ''
dir_separator: '_'
项目特定配置
- 项目的
source_dir
是转换后的包最终放置的目录 vendor
是当modman下的目录没有在名称中定义vendor时的后备设置。例如,如果你的模块是ModuleName
而不是Vendor_ModuleName
,则当决定放置包和分配composer文件中的名称时,将使用vendor
设置- 在
packages
下,你可以定义项目最终应该具有的任何默认包(同样适用于repositories
)
模块特定配置
- 这些与项目设置基本相同,区别在于这些将应用于转换后的模块的composer文件
Modman配置
dir
是modman模块所在的位置dir_separator
(如果有)是分隔vendor和模块名称的(查看示例)用于项目的vendor
设置
用法
只需运行一个命令
modcom convert
Git子模块
如果项目有git子模块(在项目的根目录中找到 .gitmodule 文件),则工具将从中读取,并将系统找到的任何已准备好使用composer的包添加为composer.json文件中的存储库。
这将帮助你处理项目中任何具有composer就绪的私有存储库,或者处理任何未添加到任何官方存储库的第三方包。
另一方面,这些包可能已经在packagist、packages.firegento或其他存储库中,但在此工具目前不进行检查,所以如果这种情况发生,建议手动从composer文件中删除存储库URL。
Composer包
在指定的modman目录下找到的任何已准备 Composer 的模块不会移动到源目录,但将直接添加为 composer 文件中的一个包。此时,工具不会检查签出的提交(如果是子模块),也不会在公共仓库中对标签进行检查,这意味着它会以 *
作为版本添加。这非常具体于项目,因此开发人员之后需要在 composer 文件中设置每个外部包的所需版本。
本地包
本地的 modman 模块现在将被转移到本地的 composer 包中,包版本将添加 *@dev
。所有这些都将移动到源目录下的自己的供应商命名空间中,每个包都有自己的 composer 文件。同时,相应的本地路径也将添加到 composer 文件中。
文件夹结构
这将是你最终得到的建议文件夹结构
root
├── src
| ├── vendor1
| | ├── module1
| └── vendor2
├── vendor
└── composer.json
理想情况下,magento 源应该作为依赖项添加到 composer 文件中,然后与在 src
目录下找到的项目特定源一起部署在 htdocs
(或 web
或其他任何目录)下。开发共享的示例使用的是 magento hackathon composer installer,它将在 Magento 安装下部署所有包。
其他用例
尽管转换器最初调用 modman 到 composer,但实际上它并没有做任何特定于 modman 的事情。这意味着您可以将此转换器应用于任何具有类似结构的其他项目。
许可协议
ModCom 根据 MIT 许可证授权 - 请参阅 LICENSE 文件以获取详细信息