@magnolia/cli-create-content-type v1.0.0-preview.1
Create Content Type
The CreateContentTypePlugin is a CLI plugin designed for the Magnolia CLI Plugin System. It facilitates the creation of contentTypes in a Magnolia light module.
Installation
To install the plugin, run the following command in your terminal:
npm install @magnolia/create-content-type-pluginConfiguration
After installation, integrate the plugin with the Magnolia CLI by adding it to your mgnl.config.js configuration file:
// other imports
import CreateContentTypePlugin from "@magnolia/cli-create-content";
export default {
commands: [
// other commands
new CreateContentTypePlugin()
]
};Adding the plugin to the configuration file enables the Magnolia CLI to recognize and execute the plugin's commands.
Usage
Create new content types by executing the following command with the appropriate options:
npm run mgnl create-content-type -- <ContentTypeName> [options]Command-line Options
Customize the actions of the plugin using the following command-line options:
-a, --app <pluralName>: Specifies the plural name for creating the content app and workspace.-lmp, --light-module-path <path>: The path to the Magnolia light module. Defaults to the current directory if omitted.-pd, --prototypeDir <path>, Sets the path to a custom prototype directory. This overrides the use of the default prototype directory. When specified, available prototypes are looked up in this directory.-P, --prototype <prototype>, Prototype that will be used for contentType creation.- If neither
--prototypenor--prototypeDiris specified, the '_default' prototype from the default prototype directory is automatically used. - If
--prototypeis specified without--prototypeDir, the chosen prototype must be one of the prototypes in the default prototype directory. - If
--prototypeDiris specified without--prototype, the plugin searches for a '_default' prototype within the specified custom prototype directory. - If both
--prototypeDirand--prototypeare specified, the chosen prototype must be located within the custom prototype directory specified by --prototypeDir.
- If neither
Examples
- To create a content type named event without associating it with a workspace:
npm run mgnl create-content-type -- event- To create a content type named event with an app named events in a specific path:
npm run mgnl create-content-type -- event --app events -lmp ./light-modules/spa-lm- To create a content type named event in the current directory, where you will be prompted to select or create a workspace:
npm run mgnl create-content-type -- event --appDirectory Structure
The resulting directory structure after executing the commands will be as follows:
my-light-module/
├── contentTypes
│ └── MyContentType.yaml
├── apps
│ └── MyApp.yamlOverriding the Default Prototypes Directory
Custom prototype directory structure:
/myCustomTemplates |-- /contentType | |-- /myTemplate | |-- |-- /__name__.yaml |-- /app | |-- /myTemplate | |-- |-- /__name__.yamlNote: Ensure that when using prototypeDir with --app option, the custom directory's structure for app templates matches that of the contentType templates. This means having corresponding directories files with equivalent naming conventions. Inconsistencies in this structure will result in command failure.
1) Using command line option
- Use --prototypeDir <path> to specify a custom directory
- Example:
```bash
npm run mgnl create-content-type -- event --prototypeDir '/Path/to/myCustomTemplates'
```2) Using constructor argument - If custom prototypes are frequently used, pass the directory path directly to the constructor. - Example:
```js
import CreateContentTypePlugin from "@magnolia/cli-create-content-type";
export default {
commands: [
new CreateContentTypePlugin({prototypeDir: '/Path/to/myCustomTemplates'})
]
};
```- Note: The --prototypeDir option takes the highest priority.