There is no need to create a Magento custom module structure from the scratch manually.
Using this great tool helps to make module creation process faster:
https://github.com/netz98/n98-magerun2
1. download and install n98-magerun2 as described on above link.
2. navigate to Magento root directory using the terminal.
3. running command:
$ n98-magerun2.phar dev:module:create
will display the following message with instructions about parameters that can be used for Module creation:
dev:module:create [-m|--minimal] [--add-blocks] [--add-helpers] [--add-models] [--add-setup] [--add-all] [-e|--enable] [--modman] [--add-readme] [--add-composer] [--author-name[="..."]] [--author-email[="..."]] [--description[="..."]] vendorNamespace moduleName
For minimal module structure, we can run:
$ n98-magerun2.phar dev:module:create -m Apiworks Minimal
which will produce the following output:
Apiworks/Minimal/etc/module.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nonamespaceschemalocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Apiworks_Minimal" setup_version="1.0.0">
<sequence>
</sequence>
</module>
</config>
Apiworks/Minimal/registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Apiworks_Minimal',
__DIR__
);