@magnolia/cli-create-component-plugin
v1.0.0
Published
A plugin for Magnolia CLI to create a headless or freemarker-based component
Downloads
100
Readme
CreateComponentPlugin
A plugin for Magnolia CLI to create a headless or freemarker-based component
Installation
Using add-plugin
Run the following command in the project's root directory:
npm run mgnl -- add-plugin @magnolia/cli-create-component-plugin
The command will install the plugin, and automatically register the plugin in
mgnl.config.js
file:import CreateComponentPlugin from "@magnolia/cli-create-component-plugin"; export default { plugins: [ new CreateComponentPlugin() ] };
To confirm that the plugin has been successfully installed, run:
npm run mgnl -- create-component --help
Manually
- Run the following command in the project's root directory:
npm install @magnolia/cli-create-component-plugin
- Manually add CreateComponentPlugin to mgnl.config.js file:
import CreateComponentPlugin from "@magnolia/cli-create-component-plugin"; export default { plugins: [ new CreateComponentPlugin() ] };
- To confirm that the plugin has been successfully installed, run:
npm run mgnl -- create-component --help
Usage
Options
| Short | Long | Description |
|---------------------------------------|------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| -a [[lm-name:]page-template[@area]]
| --available [[lm-name:]page-template[@area]]
| specify the page to make the component available to; format: [lm-name:]page-template[@area]; defaults: [lm-name:] to 'lightModule' from mgnl.config.js, [@area] to 'main' if not specified; example: 'my-lm:basic@main' |
| -lm [name]
| --light-module [name]
| set the light module for the component template; defaults to the directory specified in mgnl.config.js file |
| -p [name]
| --prototype [name]
| select a prototype for component creation |
| -v
| --version
| output the version number |
| -h
| --help
| display help for command |
Configurable Properties in mgnl.config.js
Global Properties
| Property | Description |
|----------------------------|----------------------------------------------------------------|
| componentMappingFilePath
| The path to the file containing the componentsMapping
object |
| lightModulesPath
| The directory with all light modules |
| lightModule
| The selected light module |
| type
| The type for the selected prototype, e.g., ts
or js
|
Plugin-Specific Properties
| Property | Description |
|----------------------------|------------------------------------------------------------------------------------------------|
| componentsSpaPath
| The path to the folder containing the front-end components |
| lightModule
| The selected light module |
| framework
| The framework prototype to use for component creation (e.g., @magnolia/cli-react-prototypes
) |
| prototype
| The name of the prototype to be used |
| templateData
| A key-value object used by Handlebars for template rendering |
| templateArgs
| A key-value object that modifies how the prototype behaves |
Examples
Create a component
npm run mgnl -- create-component "myFooComponent" --framework "@magnolia/cli-react-prototypes" --prototype "basic"
This command creates a new component called "myFooComponent" based on "basic" prototype from "@magnolia/cli-react-prototypes" framework. If any properties (e.g., lightModulesPath, lightModule, framework, etc.) are missing from the mgnl.config.js file, the plugin will prompt you to provide them. The entered values will be saved in the mgnl.config.js file for future use.
Create a component and make it available to a specific page and area
npm run mgnl -- create-component "myFooComponent" --available "my-lm:contact@main"
This command creates a new component called "myFooComponent", and makes it available to the "contact" page in the main area. Missing properties will be prompted for and saved as described above.
Plugin Documentation
For detailed documentation of the plugin, please refer to Plugin Documentation
Magnolia CMS
This plugin is created to work with Magnolia CMS. For more information, please refer to Magnolia CMS Documentation