MODULE-STARTER(1p)

πŸ“¦
version 1.800 Β· 4 versions
, in ubuntu resolute, ubuntu stonking

πŸ’– NAME πŸ’–

okay so bestie, welcome to MODULE-STARTER(1p) β€” she lives in the User Contributed Perl Documentation section, and she does exactly one thing and she does it slay: module-starter creates a skeleton module distribution. ✨


πŸŽ€ VERSION πŸŽ€

version 1.80 β€” yes she's been around, yes she's still iconic, no cap. πŸ‘‘


🌸 SYNOPSIS 🌸

module-starter [options]

Options: (aka the menu, aka the vibe check 🫢)

  • --module=module β€” the module name. Required, and you can repeat it as many times as you want.
  • --distro=name β€” the distribution name. optional, no pressure.
  • --dir=dirname β€” the directory name you want your new module to be created in. also optional.
  • --builder=module β€” build it with 'ExtUtils::MakeMaker' or 'Module::Build'
  • --eumm β€” literally the same as --builder=ExtUtils::MakeMaker
  • --mb β€” literally the same as --builder=Module::Build
  • --mi β€” same as --builder=Module::Install (⚠️ discouraged, bestie, just so you know)
  • --author=name β€” the author's name (if you don't give one, it gets taken from getpwuid) and the email address (taken from $ENV{EMAIL} if the author's name wasn't provided). Format: Author Name <author_email@domain.tld>. You can hand this option over multiple times for projects with multiple authors β€” polycule of authors, we love to see it. πŸ’…
  • --github=login β€” creates links to the author's GitHub issue tracker
  • --ignores=type β€” which ignore type files to include (repeatable)
  • --license=type β€” the license the module will be distributed under (default is artistic2)
  • --genlicense β€” actually generate the LICENSE file according to the license you specified
  • --minperl=ver β€” minimum Perl version required (optional; default is 5.008003)
  • --fatalize β€” generates code that makes all warnings fatal, via:
use warnings FATAL => 'all'
  • --verbose β€” prints progress messages while it's working (she's narrating her own life, main character energy)
  • --force β€” deletes pre-existing files if it needs to
  • --help β€” shows this message

✨ Available Licenses ✨

perl, artistic, artistic2, mit, mozilla, mozilla2, bsd, freebsd, cc0,
gpl, lgpl, gpl3, lgpl3, agpl3, apache, qpl

You can also specify any Software::License subclass or CPAN Meta Spec license string. so many options, we're obsessed.

πŸ¦‹ Available Ignore Types πŸ¦‹

cvs, git, hg, manifest, generic
(NOTE: If manifest is included, the MANIFEST file will be skipped and only a MANIFEST.SKIP file will be included.) β€” yes this is a real thing, read it twice.

πŸ“ Example πŸ“

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

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

πŸ’œ DESCRIPTION πŸ’œ

module-starter is a command-line interface to Module::Starter, and she uses it to do all the actual work of creating distributions. She's the face, Module::Starter is the brains, it's a whole collab. 🀝

An alternate backend for module-starter can be specified with the --class option. And plugins to the standard Module::Starter module can be specified with one or more --plugin options. slay.

If you don't supply a directory name, the distribution name gets used for the directory. If you don't supply a distribution name, the first listed module name becomes the distribution name. (First one up gets the crown, sorry to the others. πŸ‘‘)

Multiple --builder options may be supplied to produce the files for multiple builders. greedy? no. thorough. periodt.


🌈 CONFIGURATION 🌈

Before she even reads her command line parameters, module-starter goes looking for a configuration file. The default location is $HOME/.module-starter/config β€” but if the MODULE_STARTER_DIR environment variable is set, module-starter will look for config in that directory instead. ✨

The configuration file is just a list of names and values, separated by colons. Values that take lists are just space separated. And heads up bestie β€” note that the --ignores command line parameter corresponds to the ignores_type configuration file entry. (iykyk πŸ”₯)

A sample configuration file might read:

author: Ricardo SIGNES <rjbs@cpan.org>
ignores_type: git
plugins: Module::Starter::Simple Module::Starter::Plugin::XYZ
xyz_option: red green blue

This format may become more elaborate in the future, but a file of this type should remain valid. so you're safe, bestie, write it with confidence. 🫢


πŸ’€ and that's the whole page! she was written by perl v5.40.1, stamped 2026-01-23, and filed under MODULE-STARTER(1p). go forth and scaffold, queen. πŸ§šπŸ’–
πŸ“¦ where this page comes from