shopsys / monorepo-builder
Requires
- php: ^7.1
- composer/composer: ^1.8
- nette/utils: ^2.5|^3.0
- phar-io/version: ^2.0
- symfony/console: ^3.4|^4.2
- symfony/dependency-injection: ^3.4.10|^4.2
- symfony/finder: ^3.4|^4.2
- symplify/package-builder: ^6.0.5
Requires (Dev)
- phpunit/phpunit: ^7.5|^8.0
- dev-master / 6.1.x-dev
- v6.0.5
- v6.0.4
- v6.0.3
- v6.0.2
- v6.0.1
- v6.0.0
- v5.5.0
- v5.4.16
- v5.4.15
- v5.4.14
- v5.4.13
- v5.4.12
- v5.4.11
- v5.4.10
- v5.4.9
- v5.4.8
- v5.4.7
- v5.4.6
- v5.4.5
- v5.4.4
- v5.4.3
- v5.4.2
- v5.4.1
- v5.4.0
- v5.3.12
- v5.3.11
- v5.3.10
- v5.3.9
- v5.3.8
- v5.3.7
- v5.3.6
- v5.3.5
- v5.3.4
- v5.3.2
- v5.3.1
- v5.3.0
- v5.2.22
- v5.2.20
- v5.2.19
- v5.2.18
- v5.2.17
- v5.2.16
- v5.2.15
- v5.2.14
- v5.2.13
- v5.2.12
- v5.2.11
- v5.2.10
- v5.2.9
- v5.2.8
- v5.2.7
- v5.2.6
- v5.2.5
- v5.2.4
- v5.2.3
- v5.2.2
- v5.2.1
- v5.2.0
- v5.1.4
- v5.1.3
- v5.1.2
- v5.1.1
- v5.1.0
- v5.0.2
- v5.0.1
- v5.0.0
- v4.8.0
- v4.7.0
- v4.6.1
- v4.6.0
- v4.5.1
- v4.5.0
- v4.4.2
- dev-rv-enable-releasing-lower-version
This package is auto-updated.
Last update: 2019-09-09 12:25:14 UTC
README
你是否维护一个包含多个包的 monorepo?
此包包含一些有用的工具,可以使这更容易。.
安装
composer require symplify/monorepo-builder --dev
使用方法
0. 你是 Monorepo 初学者吗?
快速入门的最佳方式是阅读 goMonorepo.com 上的基本介绍。我们还为您提供了一个简单的命令,使这变得容易。
vendor/bin/monorepo-builder init
基本设置已完成!
1. 将本地 composer.json
合并到根目录中
将配置的章节合并到根 composer.json
中,这样您就只需要编辑特定包的 composer.json
,让脚本同步它。
# monorepo-builder.yml parameters: merge_sections: # default values - 'require' - 'require-dev' - 'autoload' - 'autoload-dev' - 'repositories'
要合并,只需运行
vendor/bin/monorepo-builder merge
包的典型位置是 /packages
。但如果你有不同的命名或额外的 /projects
目录怎么办?
# monorepo-builder.yml parameters: package_directories: - 'packages' - 'projects'
默认情况下,章节已为您排序。您想改变顺序吗?只需覆盖 section_order
参数。
合并后选项
您是否需要仅向根 composer.json
添加或删除一些包?
# monorepo-builder.yml parameters: data_to_append: autoload-dev: psr-4: 'Symplify\Tests\': 'tests' require-dev: phpstan/phpstan: '^0.9' data_to_remove: require: # the line is removed by key, so version is irrelevant, thus * 'phpunit/phpunit': '*'
2. 升级包相互依赖
假设你发布了 symplify/symplify
4.0,你需要让包相互依赖版本 ^4.0
。
vendor/bin/monorepo-builder bump-interdependency "^4.0"
3. 保持同步包版本
在同步的 monorepo 中,使用相同的包版本以防止错误和混乱是很常见的。所以如果你的一个包使用 symfony/console
3.4,另一个使用 symfony/console
4.1,这会告诉你。
vendor/bin/monorepo-builder validate
4. 保持包别名最新
即使已经有 3.0 版本,您也可以看到这一点。
{ "extra": { "branch-alias": { "dev-master": "2.0-dev" } } }
不好。摆脱这项手动工作,并将此命令添加到您的发布工作流程中。
vendor/bin/monorepo-builder package-alias
这将向每个包中的 composer.json
添加别名 3.1-dev
。
如果您更喜欢 3.1.x-dev
而不是默认的 3.1-dev
,您可以进行配置。
# monorepo-builder.yml parameters: package_alias_format: '<major>.<minor>.x-dev' # default: "<major>.<minor>-dev"
5. 将目录拆分为 Git 仓库
Monorepo 的经典用例是将最新标签和 master
分支同步,以允许测试 @dev
版本。
# monorepo-builder.yml parameters: directories_to_repositories: packages/PackageBuilder: 'git@github.com:Symplify/PackageBuilder.git' packages/MonorepoBuilder: 'git@github.com:Symplify/MonorepoBuilder.git'
通过以下命令运行:
vendor/bin/monorepo-builder split
为了提高约50-60%的效率,所有仓库都并行同步。
6. 发布流程
当您发布软件包的新版本时,您需要进行许多手动步骤
- 增加相互依赖项的版本号,
- 标记此版本,
- 使用带有标记的
git push
, - 将
CHANGELOG.md
的标题 未发布 改为v<版本号> - Y-m-d
格式 - 将别名和相互依赖项提升到下一个版本别名
但如果您忘记了一个或者顺序错误?一切都会崩溃!
使用 release
命令将使您更安全
vendor/bin/monorepo-builder release v7.0
您害怕标记和推送吗?使用 --dry-run
只查看描述
vendor/bin/monorepo-builder release v7.0 --dry-run
7. 设置您自己的发布流程
有一组默认的发布工作流 - 实现了 Symplify\MonorepoBuilder\Release\Contract\ReleaseWorker\ReleaseWorkerInterface
的类。
您可以通过添加自己的来扩展它
# monorepo-builder.yml services: App\Release\ShareOnTwitterReleaseWorker: ~
或者禁用默认的
# monorepo-builder.yml parameters: enable_default_release_workers: false