Features:
- split YAML files containing multiple nodetypes into separate files each containing one nodetype
- reorganize nodetypes files from the old style
Configurationfolder to the newNodeTypesfolder and will also create subfolders based on their naming scheme
Download the Phar version of the latest release.
You can find it after the individual change log in the Assets section.
Afterwards you should make the file executable by running
chmod a+x yaml-splitter.pharNow you can follow the usage examples below.
Add this tool as dependency to your project via
composer require --dev shel/yaml-splitter Or install the package globally via
composer global require shel/yaml-splitter Afterwards you can run the commands in your project by prefixing the usage examples like this:
bin/yaml-splitter.php split ..../yaml-splitter.phar list
./yaml-splitter.phar help split
./yaml-splitter.phar split [options] [--] <path> [<output-path>]
This will copy each node type found in the input file into a new file.
Each new file be have a name like NodeTypes.MyNodeType.yaml.
Additionally, each filename will get a prefix after NodeTypes like Document, Content or Mixin
based on the name of the actual node type.
Also, when the option package-key is provided, node types matching the package key will
have the standard naming and others will get names like NodeTypes.Override.SomeOtherNodeType.yaml.
dry-runallows seeing what would happen without writing any fileuse-folderssplits the nodetypes into a folder structure for Neos 7.2+package-keyallows to define the main package key of your node types, so node types with different package keys would be written toNodeTypes.Override.xyzfiles.indentationnumber of spaces for indentation in the resulting YAML files
./yaml-splitter.phar split --dry-run --package-key MyVendor path/to/MyVendor.NodeTypes.yaml path/to/packageWith Neos 7.2 it's possible to organize nodetypes into separate folders than Configuration.
It also allows you to use subfolders.
With the following command you can move all NodeTypes.*.yaml from a Configuration folder into
another folder. They will automatically be put into subfolders based on their naming scheme.
So for example you have the following files in your Configuration folder of your site package:
Configuration
├── NodeTypes.Content.Image.yaml
├── NodeTypes.Content.Text.yaml
├── NodeTypes.Document.Abstract.Page.yaml
├── NodeTypes.Document.Home.yaml
├── NodeTypes.Document.Page.yaml
├── NodeTypes.Override.Content.Popup.yaml
├── NodeTypes.Override.Mixin.Document.yaml
└── NodeTypes.Override.Mixin.MarginMixin.yaml
Now you run the reorganize command:
./yaml-splitter.phar reorganize path/to/sitepackage/Configuration path/to/sitepackage/NodeTypesAfter you execute the command you will have the following structure:
NodeTypes
├── Content
│ ├── Image.yaml
│ └── Text.yaml
├── Document
│ ├── Abstract
│ │ └── Page.yaml
│ ├── Home.yaml
│ └── Page.yaml
└── Override
├── Content
│ └── Popup.yaml
└── Mixin
├── Document.yaml
└── MarginMixin.yamlNote: If you still have multiple nodetypes inside one file, it's recommended to first run the split command and then reorganize.
The tool is based on the Symfony console component.
First install box.
Then run
composer run compile