Module::Starter(3pm)

πŸ’– NAME πŸ’–

Module::Starter β€” a simple starter kit for any module. Yes bestie, that's literally it. This page is Module::Starter(3pm), straight out of the User Contributed Perl Documentation section, and we're gonna walk through every single bit of it together. 🫢


✨ VERSION ✨

version 1.80 β€” that's the one, no cap. πŸŽ€


🌸 SYNOPSIS 🌸

Okay so lowkey important: nothing in here is meant for public consumption. Like, this is not the vibe you're supposed to be calling directly. Use module-starter from the command line, bestie.

    module-starter --module=Foo::Bar,Foo::Bat \
        --author="Andy Lester <andy@petdance.com>"

That's the whole synopsis. Chef's kiss. πŸ‘‘


πŸ¦‹ DESCRIPTION πŸ¦‹

This is the core module for Module::Starter. So if you're not trying to extend it or mess with how it behaves, you probably want to go look at module-starter instead. Just saying. πŸ’…

Module::Starter is the thing that creates a skeletal CPAN distribution β€” like, basic builder scripts, tests, documentation, and module code, all the scaffolding. And it does ALL of that through literally just one method: create_distro. One method. Main character energy fr.


πŸ’œ METHODS πŸ’œ

πŸ’« Module::Starter->create_distro(%args) πŸ’«

create_distro is the only method you should need to use from outside this module. Everything else is getting called internally by this one. She's the boss. 🌈

This method creates β€” orchestrates β€” all the work: it makes the distribution and populates it with all the required files.

It takes a hash of params, as follows:

    distro       => $distroname,      # distribution name (defaults to first module)
    modules      => [ module names ], # modules to create in distro
    dir          => $dirname,         # directory in which to build distro
    builder      => 'Module::Build',  # defaults to ExtUtils::MakeMaker
                                      # or specify more than one builder in an
                                      # arrayref

    license      => $license,    # type of license; defaults to 'artistic2'
    author       => [ authors ], # author(s) name and email address
                                 # (if not provided, name and email are taken from getpwuid and
                                 # EMAIL respectively)
                                 # format: Author Name <author-email@domain.tld>
    github       => $username,   # author's GitHub user name (for creating links to issue tracker)
    ignores_type => $type,       # ignores file type ('generic', 'cvs', 'git', 'hg', 'manifest')
    fatalize     => $fatalize,   # generate code that makes warnings fatal

    verbose      => $verbose,    # bool: print progress messages; defaults to 0
    force        => $force       # bool: overwrite existing files; defaults to 0

The ignores_type is a new feature that lets you create SCM-specific ignore files. Here are the mappings, keep them safe:

    ignores_type => 'generic'  # default, creates 'ignore.txt'
    ignores_type => 'cvs'      # creates .cvsignore
    ignores_type => 'git'      # creates .gitignore
    ignores_type => 'hg'       # creates .hgignore
    ignores_type => 'manifest' # creates MANIFEST.SKIP

And it is also possible to provide an array ref with multiple types wanted, because why pick one when you can have both:

    ignores_type => [ 'git', 'manifest' ]

Periodt. πŸ’…


🧚 PLUGINS 🧚

Plot twist: Module::Starter itself doesn't actually do anything. 😭 It must load plugins that implement create_distro and other methods. That happens through the class's import routine, which accepts a list of plugins to be loaded, in order.

For more information, refer to Module::Starter::Plugin.


πŸ‘‘ AUTHORS πŸ‘‘

Say thank you to the icons:

  • Dan Book, <dbook at cpan.org>
  • Sawyer X, <xsawyerx at cpan.org>
  • Andy Lester, <petdance at cpan.org>
  • Ricardo Signes, <rjbs at cpan.org>
  • C.J. Adams-Collier, <cjac at colliertech.org>

πŸ’– SUPPORT πŸ’–

You can find documentation for this module with the perldoc command:

    perldoc Module::Starter

You can also look for information at:

  • Source code at GitHub

<https://github.com/xsawyerx/module-starter>

  • GitHub issue tracker

<https://github.com/xsawyerx/module-starter/issues>

  • Search CPAN

<https://metacpan.org/release/Module-Starter>


πŸ› BUGS πŸ›

Please report any bugs or feature requests to the bugtracker for this project on GitHub at <https://github.com/xsawyerx/module-starter/issues>. They'll be notified, and then you'll automatically be notified of progress on your bug as changes get made. Bestie gets updates. That's the system. 🫢


Copyright 2005-2009 Andy Lester, Ricardo Signes and C.J. Adams-Collier, All Rights Reserved.

Copyright 2010 Sawyer X, All Rights Reserved.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.


⭐ SEE ALSO ⭐

  • mbtiny β€” Minimal authoring tool to create and manage distributions using Module::Build::Tiny as an installer.
  • Dist::Milla β€” Easy to use and powerful authoring tool using Dist::Zilla to create and manage distributions.
  • Minilla β€” Authoring tool similar to Dist::Milla but without using Dist::Zilla.
  • Dist::Zilla β€” Very complex, fully pluggable and customizable distribution builder.

And that's the whole page, bestie! πŸŽ€ This was Module::Starter(3pm) β€” the Perl manual page, perl v5.40.1, dated 2026-01-23. Slay, go build your distro. πŸ’…βœ¨πŸ¦‹

πŸ“¦ where this page comes from