Dist::Zilla Subcommands

Now that you've gotten your hands grimy operating some of Dist::Zilla's machinery, let's zoom out a bit and take a factory floor level look at Dist::Zilla with an overview of some other subcommands Dist::Zilla provides out of the box.

The dzil new Command

After installing and configuring Dist::Zilla, you issued the dzil new command to get the process started. If you think of Dist::Zilla as a module distribution production factory, then the new command establishes a new work area on the factory floor for assembling the raw product (the module) before assembling, packaging and shipping it.

The work area you set up for the Greetings module used Dist::Zilla's default profile that, as you saw, was very sparse and bare-bones. You will learn how to teach Dist::Zilla to establish highly customized work areas by, in the jargon of Dist::Zilla, "minting a custom profile." More on this later.

The dzil build Command

After writing your one-function module, you issued the dzil build command. The build command generated a copy of your distribution and placed a copy of it in your work area along with a tarballed version of it.

An excellent way to think about the build command is to imagine it as a button that activates an assembly line. Your raw product, the module, is loaded onto the beginning of the assembly line. As your module moves down the line, an ordered series of robots, called plugins, work their magic to transform your module into a finished, fully packaged distribution at the end of the line that, if all goes well, it's ready for you to ship to the rest of the world.

Many plugins come pre-packaged with Dist::Zilla but there are hundreds more available on CPAN. You can also write your own plugins to build your distribution in highly speciaized ways. Plugins are an important topic which we will cover in more detail, shortly.

The dzil release Command

You didn't issue this command in the previous chapter of our tutorial but this is the command that will "box" and "ship" your finished distribution to whatever destination you want to deliver it to. Common destinations include a remote git repository and CPAN. As you'll see, you can customize this process just like you can the build process. And similar to the build process, the release process relies on a series of discrete plugins to get your product out the door. This command will be covered much later in the tutorial.

The dzil test Command

This is another command we didn't cover in the first chapter but as you might guess, it's used to run the tests on your module. This command will come in handy as as you develop your module to see if it passes the tests. We will discuss this command as well as automated testing in future tutorials.

The dzil install Command

As you already saw, you use this command to install a distribution to your local machine. Once installed, other modules on your system can easily load it with a use statement.

The dzil clean Command

No one likes working in a dirty environment so it's a good idea to sweep away all the debris that accumulates on your shop floor while you work. Go ahead and issue this command now to see what happens:

dzil clean

Both the tarball file and the distribution directory are now gone and only the files we had after issuing the new command are left behind. But don't worry, you can easily get them back by issuing the dzil build command.

Other dzil Commands

There are other, minor dzil subcommands but since this is a tutorial and not a manual, we will encourage you to take some time and explore the other commands with dzil --help and dzil <subcommand> --help. We will cover some of these other command later in the tutorial.

We now turn your attention to a very important topic, the dist.ini file.