Below is a listing of some of the more commonly used files in a Drupal modules (themes and profiles are very similar in structure). Most are not required unless you need the functionality that they provide. The two required files are the ".info.yml" file and the ".module" file.
Please note that "my_module" should be replaced in all cases with the actual machine name of your module.
my_module/
config/
install/ - Configuration registry files to be loaded when module is installed
optional/ - Configuration registry files to be loaded when module is installed
my_module.info.yml - Module name, description, version, dependencies, etc.
my_module.install - Custom installation, upgrade, and uninstallation code
my_module.libraries.yml - Custom CSS/JavaScript collection definitions
my_module.links.action.yml - Custom action links
my_module.links.contextual.yml - Custom contextual links
my_module.links.menu.yml - Custom static general menu links
my_module.links.task.yml - Custom task links
my_module.module - Base code for module
my_module.permissions.yml - Custom permission definitions
my_module.routing.yml - Custom route definitions
my_module.services.yml - Custom service definitions
src/ - Autoloader Class Files
Controller/ - Custom dynamic page controllers
Form/ - Custom configuration page definitions
Plugin/ - Custom implementations of common Drupal components
Block/ - Custom dynamic Drupal block definitions
Field/ - Custom field formatters
Filter/ - Custom input filters
Menu/ - Custom dynamic menu items
templates/ - Custom TWIG templates
Additional Definitions
- Action links: Blue buttons with white text that appear at the tops of some admin pages.
- Contextual links: Links shown in a pop-up box when the pencil icon is selected on any block.
-
General menu links: Links in any menu object that appears in
Structure -> Menus; A Menu plugin (src/Plugin/Menu/*.php) can be used to dynamically add links to a menu object. - Task links: Tabs that show on admin pages, such as the View / Edit / Revisions tabs on node pages.
- Service: One example is the Breadcrumb bar service, which can be extended to let you customize the breadcrumbs that appear for specific pages.