nerds-and-company / schematic
构建设置和同步工具
Requires
- php: ^7.0
- craftcms/cms: ~3.0.0
- symfony/yaml: ^3.0 || ^4.0
Requires (Dev)
- codeception/codeception: ^2.4
- craftcms/cms: 3.0.12
- phpmd/phpmd: ^2.6
- squizlabs/php_codesniffer: ^3.2
- dev-master
- 4.1.2
- 4.1.1
- 4.1.0
- 4.0.18
- 4.0.17
- 4.0.16
- 4.0.15
- 4.0.14
- 4.0.13
- 4.0.12
- 4.0.11
- 4.0.10
- 4.0.9
- 4.0.8
- 4.0.7
- 4.0.6
- 4.0.5
- 4.0.4
- 4.0.3
- 4.0.2
- 4.0.1
- 4.0.0
- 3.8.12
- 3.8.11
- 3.8.10
- 3.8.9
- 3.8.8
- 3.8.7
- 3.8.6
- 3.8.5
- 3.8.4
- 3.8.3
- 3.8.2
- 3.8.1
- 3.8.0
- 3.7.2
- 3.7.1
- 3.7.0
- 3.6.1
- 3.6.0
- 3.5.2
- 3.5.1
- 3.5.0
- 3.4.3
- 3.4.2
- 3.4.1
- 3.4.0
- 3.3.2
- 3.3.1
- 3.3.0
- 3.2.2
- 3.2.1
- 3.2.0
- 3.1.6
- 3.1.5
- 3.1.4
- 3.1.3
- 3.1.2
- 3.1.1
- 3.1.0
- 3.0.1
- 3.0.0
- 2.0.1
- 2.0.0
- 1.4.1
- 1.4.0
- 1.3.0
- 1.2.4
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.0
- 1.0.1
- 1.0.0
- dev-craft2
This package is auto-updated.
Last update: 2024-09-11 01:42:25 UTC
README
Schematic 允许您在不同的环境中同步您的 Craft 设置。它通过将有关资产、数据库(字段、部分、用户)、区域和插件的信息导出到一个可以导入到其他环境的 YAML 文件来实现。
❗ Craft 3.1 注意
Craft 3.1 引入了一个项目配置,将提供大部分(如果不是全部)schematic 功能。我们将继续支持 schematic,但它似乎可能变得过时。
目前 Schematic 在 Craft 3.1 或更高版本上无法运行!
安装
您可以使用 Composer 安装此工具。从项目的根目录运行以下命令
composer require nerds-and-company/schematic
这将把 nerds-and-company/schematic 添加到项目的 composer.json 文件中,并将源代码安装到 vendor/nerds-and-company/schematic 目录中。
Schematic 现在可以在 Craft 中作为可安装的插件使用。您可以在 cp 中安装它或使用 ./craft install/plugin schematic
使用方法
基本使用
此工具最常用的用法模式,从开发环境同步到生产环境,将会是
- 在本地创建一个 Craft 项目
- 设置所有所需的插件、部分、模板等
- 在本地运行 Schematic 导出
- 如果使用版本控制系统,可以将模式文件提交到本地存储库
- 将 Craft 应用程序部署到生产环境
- 在远程运行 Schematic 导入
或者,从生产环境同步到开发环境
- 在远程运行 Schematic 导出
- 将模式文件拉取到本地
- 如果使用版本控制系统,可以将模式文件提交到本地存储库
- 在本地运行 Schematic 导入
导出
通过运行以下命令创建导出
./craft schematic/export
要跳过导出特定类型的数据,可以在以下形式中指定排除项
./craft schematic/export --exclude=volumes
也可以指定多个排除项
./craft schematic/export --exclude=volumes,categoryGroups
同样,也可以仅导出数据类型的子集
./craft schematic/export --include=volumes,categoryGroups
参见 [支持的数据类型](#支持的数据类型)
导出将在 config/schema.yml 生成一个模式文件。文件路径可以使用 --file 标志更改,例如 craft schematic/export --file=path/to/my-schema.yml
导入
要使用 schematic 运行导入,需要一个模式文件。可以通过运行以下命令创建导入
./craft schematic/import
默认情况下,schematic 将查看 config/schema.yml。要更改 schematic 查找模式文件的路径,请使用 --file 标志。
可选地,可以使用 --force 标志来删除导入文件中未提及的任何项目。
警告!! 这也将删除任何 相关 内容。
要跳过导入特定类型的数据,可以在以下形式中指定排除项
./craft schematic/import --exclude=volumes
也可以指定多个排除项
./craft schematic/import --exclude=volumes,categoryGroups
参见 [支持的数据类型](#支持的数据类型)
支持的数据类型
以下是所有数据类型及其对应的排除参数值的列表
覆盖和环境变量
可以通过在 config/override.yml 中添加一个键并设置相应的环境变量来覆盖特定的键。在 override.yml 中的键名需要与要从 schema.yml 中覆盖的键相同,包括任何父键名。
覆盖文件在导出时也会被应用,因此您的变量不会被实际值覆盖。原理图也支持使用--override-file标志传递覆盖文件,例如:./craft schematic/import --override-file=路径/to/你的/config/override.yml。
示例
如果以下override.yml已定义
parent: key_name: %KEY_VALUE%
则需要设置环境变量KEY_VALUE。此环境变量的值将覆盖键key_name。如果未设置环境变量,Schematic将抛出错误。
环境变量也可以直接在schema.yml文件中使用。请注意,如果这样做,它们将在导出时被其环境变量的值覆盖。
事件
可以使用EVENT_RESOLVE_CONVERTER事件注入自定义转换器。这对于导入和导出自定义字段类型特别有用。转换器需要实现NerdsAndCompany\Schematic\Interfaces\ConverterInterface。
Event::on(Schematic::class, Schematic::EVENT_RESOLVE_CONVERTER, function (ConverterEvent $event) { if ($event->modelClass = "My\Custom\Field") { $event->converterClass = "My\Custom\FieldConverter"; } });
可以使用EVENT_MAP_SOURCE事件注入自定义源映射。这对于导入和导出自定义源特别有用。
Event::on(Schematic::class, Schematic::EVENT_MAP_SOURCE, function (SourceMappingEvent $event) { list($sourceType, $sourceFrom) = explode(':', $event->source); switch ($sourceType) { case 'plugin-source': $event->service = Craft::$app->customService; $event->method = 'getCustomModelBy'; break; } });
注意事项
Schematic使用句柄来标识内容。当方案文件中的句柄发生变化,并且以强制方式运行导入时,将创建一个新的内容类型,并删除旧的内容类型!
建议使用Craft内容迁移更改内容类型句柄,并在运行Schematic导入之前运行这些迁移。
许可
本项目已根据MIT许可(MIT)授权。有关更多信息,请参阅许可文件。
变更日志
致谢
灵感来自并基于出色的ArtVandelay插件,并由这些出色的个人构建。