Here name is the name of your component, and setup_version is your module’s database schema
version. Both of these attributes are required.

Avoid using “Ui” for your custom module name because the %Vendor%_Ui notation, required when specifying paths, might cause issues.

Add the component’s composer.json file

composer.json provides a component name and also specifies component dependencies.

In addition, the Component Manager looks for a composer.json in a component’s root directory and can perform actions on the component and its dependencies:

If a component has composer.jsonand the component was installed using Composer
(including from packagist, the Magento Marketplace, or other source), the Component Manager can update, uninstall, enable, or disable the component.

If the component has composer.json but was not installed using Composer (for example, custom code a developer wrote), Component Manager can still enable or disable the component.

We strongly recommend you include composer.json in your component’s root directory whether or not you intend to distribute it to other Magento merchants.

suggest lists soft dependencies. The component can operate without them, but if the components are active, this component might impact their functionality. Suggest does not affect component load order.

type determines what the Magento component
type. Choose from magento2-theme, magento2-language, or magento2-module.