The abp new module and abp add-module commands in the ABP CLI serve different purposes within the ABP Framework:

abp new moduleabp add-module
PurposeCreates a new, standalone module project. This module can be used independently or integrated into other ABP applications or solutions.Adds a new module to an existing ABP solution or project. It is used to introduce additional functionality or features to an existing application.
UsageWhen you want to build a new reusable module from scratch, complete with its own solution structure. It generates a full module structure with project folders, files, and necessary components to start building a module.When you want to expand an existing ABP project by adding a module. This command generates the required structure and integrates it with the current solution.
IntegrationThough the new module is standalone, it is designed for integration into existing ABP projects or solutions. After creating the module, you can integrate it with an existing project by:
* Adding project references.
* Configuring dependencies to ensure the main application recognizes the new module.
* Managing configuration to ensure seamless communication between modules.
It updates the existing solution to recognize the new module, typically adding project references and other dependencies to ensure smooth integration.
StructureTypically creates several projects within the module solution, such as:
*.Domain: For domain logic and entities.
*.Application: For application services.
*.Infrastructure: For database and other infrastructure.
*.HttpApi: For HTTP APIs.
And possibly UI-related projects if specified.
Creates module-related projects within the current solution, similar to abp new module, but within the context of the existing solution.
Example Use CaseYou are creating a new module that will be shared across multiple applications or can be distributed independently (e.g., a module for handling bank transactions).You have an existing accounting application and want to add a module for bank transactions without creating a completely separate solution.

1. abp new module

  • Purpose: Creates a new, standalone module project. This module can be used independently or integrated into other ABP applications or solutions.
  • Usage: When you want to build a new reusable module from scratch, complete with its own solution structure. It generates a full module structure with project folders, files, and necessary components to start building a module.
  • Structure: Typically creates several projects within the module solution, such as:
    • *.Domain: For domain logic and entities.
    • *.Application: For application services.
    • *.Infrastructure: For database and other infrastructure.
    • *.HttpApi: For HTTP APIs.
    • And possibly UI-related projects if specified.
  • Example Use Case: You are creating a new module that will be shared across multiple applications or can be distributed independently (e.g., a module for handling bank transactions).

2. abp add-module

  • Purpose: Adds a new module to an existing ABP solution or project. It is used to introduce additional functionality or features to an existing application.
  • Usage: When you want to expand an existing ABP project by adding a module. This command generates the required structure and integrates it with the current solution.
  • Integration: It updates the existing solution to recognize the new module, typically adding project references and other dependencies to ensure smooth integration.
  • Structure: Creates module-related projects within the current solution, similar to abp new module, but within the context of the existing solution.
  • Example Use Case: You have an existing accounting application and want to add a module for bank transactions without creating a completely separate solution.

Key Differences

  • Scope: abp new module creates a new module solution, while abp add-module integrates a module into an existing solution.
  • Purpose: Use abp new module when starting a new, standalone module project; use abp add-module when expanding an existing ABP project with additional functionality or a new module.
  • Integration: abp new module creates a completely separate solution, while abp add-module integrates into an existing solution, ensuring dependencies are configured correctly.

These commands offer flexibility in building modular applications with the ABP Framework, allowing for both standalone module creation and seamless integration with existing projects.