poposki/modcom

将modman转换为Composer项目的转换器

0.1.0 2016-06-12 11:18 UTC

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 文件以获取详细信息