A plugin for Magnolia CLI to create a headless or freemarker-based component
sh
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:
`js
import CreateComponentPlugin from "@magnolia/cli-create-component-plugin"; export default {
plugins: [
new CreateComponentPlugin()
]
};
`
2. To confirm that the plugin has been successfully installed, run:
`bash
npm run mgnl -- create-component --help
`$3
1. Run the following command in the project's root directory:
`bash
npm install @magnolia/cli-create-component-plugin
`
2. Manually add CreateComponentPlugin to mgnl.config.js file:
`javascript
import CreateComponentPlugin from "@magnolia/cli-create-component-plugin"; export default {
plugins: [
new CreateComponentPlugin()
]
};
`
3. To confirm that the plugin has been successfully installed, run:
`bash
npm run mgnl -- create-component --help
`Usage
$3
| 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 |
$3
#### 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 |$3
#### Create a component
`bash
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
`bash
npm run mgnl -- create-component "myFooComponent" --available "my-lm:contact@main"
``