[ZPM](https://openexchange.intersystems.com/package/ObjectScript-Package-Manager-2) is a package manager designed for convenient deployment of applications and modules on the IRIS platform. Module developers, in order for their module to be installed using ZPM, need to follow a series of simple steps. * Write module code * Create a module.xml file that contains the meta description of the module * Using the test registry, publish the module, verify that it is published * Install the module from the test registry * Publish the module. To publish in the public registry pm.community.intersystems.com, you need to publish the module in [https://openexchange.intersystems.com](https://openexchange.intersystems.com), specifying the github url of your package and tick the “Publish in Package Manager” checkbox. Creating a module.xml file manually can be tedious, so the generate command will now be created in zpm (starting with version 0.2.3). **The generate command is for creating module.xml for your project.** ## How to use: Run zpm in terminal And then type `generate` USER>zpm zpm: USER>generate /temp/zzz As an argument (in this case /temp/zzz) specify the path to the directory with your project. The module.xml file will be created in this directory. Then answer questions: zpm: USER>generate /temp/zzz Enter module name: my-module Enter module version: 1.0.0 => 1.0.1 Enter module description: module description Enter module keywords: test,zpm,docker Enter module source folder: src => Existing Web Applications: /csp/user /registry Enter a comma separated list of web applications or * for all: /csp/user Enter path to csp files for /csp/user: web Dependencies: Enter module:version or empty string to continue: sslclient:* Enter module:version or empty string to continue: zpm: USER> * module source folder – relative path to your code (classes, routines), usually src. All classes and routines in this folder are loaded into current namespace. * If your module includes web applications, indicate which web applications from the current namespace should be added to module.xml * If your module contains dependencies, specify the module and its version. Use * for the latest version. If you need to add author and license information to module.xml, use the -author (-a) modifier. zpm: USER>generate -author /temp/zzz The generate command also supports a different option: use the `-template (-t)` modifier. The module.xml is created with the fictional data, which you need to change manually. zpm: USER>generate -template /temp/zzz [Watch this video](https://www.youtube.com/watch?v=so42Trye81k) demonstrating the usage of the generate command.