mbtiny - A standalone authoring script for Module::Build::Tiny


version 0.028


 mbtiny listdeps | cpanm
 mbtiny test --release
 mbtiny dist


Essentially mbtiny does only one thing: generate the ancillary files of a distribution with App::ModuleBuildTiny. To be more exact, it can generate:

  • Build.PL

    This contain the code needed to build the dist using Module::Build::Tiny.


    This contains the list of files in this distribution, and optionally descriptions.

  • META.json

    The file containing most meta information about this distributions. Useful for both presenting information to the user as for installing the distribution.

  • META.yml

    This is the legacy meta file. This is mainly useful for bootstrapping on CPAN clients too old to support META.json but recent enough to support configure_requires.

The information for these files is gathered from various sources. The distribution name is taken from the local directory name. The version, abstract and author are taken from the main module of the distribution. Prerequisites are mostly taken from a cpanfile, except when injected explicitly (e.g. a configure dependency on Module::Build::Tiny). A metamerge.json or metamerge.yml file can be used to merge any additional meta information you want (including dependencies).


It supports two different workflows, which I call Feedback and Generator. In both cases, additional tools are used for various other authoring tasks such as perl-reversion, scan-prereqs-cpanfile and cpan-upload.


In this workflow you're commiting the generated files to the filesystem/repository, in particular using the regenerate command.


In this workflow the generated files aren't written back to the file system, instead they are generated on every mbtiny command.


  • test

    This runs all of the tests of a distribution. It takes two options that can both be negated:

    • release

      Run release tests. Defaults to false.

    • author

      Run author tests. Defaults to true.

  • run

    Run the specified command in a build distribution. It takes one boolean argument:

    • no-build

      This will cause mbtiny not to build the distribution before running the command.

  • upload

    This builds a tarball and uploads it to CPAN.

    Using a Config::Identity compatible .pause file in your home directory is recommended, but if it's absent or incomplete your credentials will be asked on the console.

  • shell

    Runs the $SHELL, this is equivalent to mbtiny run --no-build $SHELL. It takes one argument.

    • build

      This will cause mbtiny to build the distribution before running the shell.

  • dist

    This creates a distribution tarball.

  • distdir

    This creates a directory containing all of the files of the distribution.

  • listdeps

    List all dependencies of this distribution. By default it prints a list of modules. If the json option option is given, it's printed as JSON instead.

  • regenerate <files>

    This regenerates the given files. If no files are given, it defaults to the six files it can regenerate: Build.PL, MANIFEST, META.json META.yml, LICENSE and README. You usually want to do this after bumping the version of a module, adding a dependency or adding a file.

  • mint <distribution>

    This creates a new distribution. It takes one mandatory positional argument, the name of the new distribution, and up to five optional named arguments

    • abstract

      The abstract of this new distribution. It defaults to an empty string.

    • author

      The name of the author of this distribution. The default value is set in the configuration file.

    • dirname

      The directory name for the new distribution. It defaults to the distribution name.

    • email

      The email address of the author. The default value is set in the configuration file.

    • license

      The license of the new distribution. It default is set in the configuration file, this is usually Perl_5.

    • version

      The initial version of the new distribution. This defaults to 0.001.

  • configure <type>

    This creates or update your configuration file (at ~/.mbtiny/config). It takes one optional position argument that can take any of the following values:

    • update

      This asks you about all configuration items that are currently empty. This is the default.

    • all

      This asks you about all configuration items, even if they currently have a value.

    • reset

      This removes the current configuration file.