Dist::Zilla::PluginBundle::Author::RWSTAUNER - RWSTAUNER's Dist::Zilla config


version 2.000


        # dist.ini



This is an Author Dist::Zilla::PluginBundle that I use for building my dists.

This Bundle was heavily influenced by the bundles of RJBS and DAGOLDEN.


Possible options and their default values:

        auto_prereqs   = 1  ; enable AutoPrereqs
        fake_release   = 0  ; if true will use FakeRelease instead of 'releaser'
        is_task        = 0  ; set to true to use TaskWeaver instead of PodWeaver
        releaser       = UploadToCPAN
        skip_plugins   =    ; default empty; a regexp of plugin names to exclude
        skip_prereqs   =    ; default empty; corresponds to AutoPrereqs:skip
        weaver_config  = @Author::RWSTAUNER

The fake_release option also respects $ENV{DZIL_FAKERELEASE}.

Note that you can also specify attributes for any of the bundled plugins. This works like Dist::Zilla::Role::Stash::Plugins except that the role is not actually used (and there is no stash) because PluginBundles already have a dynamic configuration. The option should be the plugin name and the attribute separated by a colon (or a dot, or any other non-word character(s)).

For example:

        AutoPrereqs:skip = Bad::Module

Note that this is different than

        skip = Bad::Module

which will load the plugin a second time. The first example actually alters the plugin configuration as it is included by the Bundle.

String (or boolean) attributes will overwrite any in the Bundle:

        CompileTests.fake_home = 0

Arrayref attributes will be appended to any in the bundle:

        MetaNoIndex:directory = another-dir

Since the Bundle initializes MetaNoIndex:directory to an arrayref of directories, another-dir will be appended to that arrayref.

You can overwrite the attribute by adding non-word characters to the end of it:

        MetaNoIndex:directory@ = another-dir
        ; or MetaNoIndex:directory[] = another-dir

You can use any non-word characters: use what makes the most sense to you. Note that you cannot specify an attribute more than once (since the configuration is dynamic and the Bundle cannot predeclare unknown attributes as arrayrefs).

If your situation is more complicated you can use the skip_plugins attribute to have the Bundle ignore that plugin and then you can add it yourself:

        directory = one-dir
        directory = another-dir
        skip_plugins = MetaNoIndex


This bundle is roughly equivalent to:

        [Git::NextVersion]      ; autoincrement version from last tag

        ; choose files to include (dzil core [@Basic])
        [GatherDir]             ; everything under top dir
        [PruneCruft]            ; default stuff to skip
        [ManifestSkip]          ; custom stuff to skip

        ; munge files
        [Authority]             ; inject $AUTHORITY into modules
        do_metadata = 1         ; default
        [NextRelease]           ; simplify maintenance of Changes file
        format = %v %{yyyy-MM-dd}d
        [PkgVersion]            ; inject $VERSION into modules
        [Prepender]             ; add header to source code files

        [PodWeaver]             ; munge POD in all modules
        config_plugin = @Author::RWSTAUNER
        ; 'weaver_config' can be set to an alternate Bundle
        ; set 'is_task = 1' to use TaskWeaver instead

        ; generate files
        [License]               ; generate distribution files (dzil core [@Basic])

        ; metadata
        [Bugtracker]            ; include bugtracker URL and email address (uses RT)
        [Repository]            ; determine git information (if -e ".git")
        [GithubMeta]            ; overrides [Repository] if repository is on github

        ; disable with 'auto_prereqs = 0'

        [MetaNoIndex]           ; encourage CPAN not to index:
        directory = corpus
        directory = examples
        directory = inc
        directory = share
        directory = t
        directory = xt

        [MetaProvides::Package] ; describe packages included in the dist
        meta_noindex = 1        ; ignore things excluded by above MetaNoIndex

        [MinimumPerl]           ; automatically determine Perl version required

        [MetaConfig]            ; include Dist::Zilla info in distmeta (dzil core)
        [MetaYAML]              ; include META.yml (v1.4) (dzil core [@Basic])
        [MetaJSON]              ; include META.json (v2) (more info than META.yml)

        [Prereqs / TestRequires]
        Test::More = 0.96       ; require recent Test::More (including subtests)

        [ExtraTests]            ; build system (dzil core [@Basic])
        [ExecDir]               ; include 'bin/*' as executables
        [ShareDir]              ; include 'share/' for File::ShareDir

        [MakeMaker]             ; create Makefile.PL
        [ModuleBuild]           ; create Build.PL
        [DualBuilders]          ; only require one of the above two (prefer 'build')

        ; generate t/ tests
        [CompileTests]          ; make sure .pm files all compile
        fake_home = 1           ; fakes $ENV{HOME} just in case
        [ReportVersions::Tiny]  ; show module versions used in test reports

        ; generate xt/ tests
        [CPANChangesTests]      ; Test::CPAN::Changes
        [MetaTests]             ; test META
        [PodSyntaxTests]        ; test POD
        [PodCoverageTests]      ; test documentation coverage
        [Test::Pod::LinkCheck]  ; test Pod links
        [Test::Pod::No404s]     ; test Pod http links
        [PodSpellingTests]      ; spell check POD
        [PortabilityTests]      ; test portability (why? who doesn't use Linux?)
        [KwaliteeTests]         ; CPANTS
        [MinimumVersionTests]   ; test that the automatic plugin worked

        [Manifest]              ; build MANIFEST file (dzil core [@Basic])
        ; actions for releasing the distribution (dzil core [@Basic])
        [TestRelease]           ; run tests before releasing
        [ConfirmRelease]        ; are you sure?
        ; set 'fake_release = 1' to use [FakeRelease] instead
        ; set 'releaser = AlternatePlugin' to use a different releaser plugin
        ; 'fake_release' will override the 'releaser' (useful for sub-bundles)




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

  perldoc Dist::Zilla::PluginBundle::Author::RWSTAUNER


The following websites have more information about this module, and may be of help to you. As always, in addition to those websites please use your favorite search engine to discover more resources.

Bugs / Feature Requests

Please report any bugs or feature requests by email to bug-dist-zilla-pluginbundle-author-rwstauner at, or through the web interface at You will be automatically notified of any progress on the request by the system.

Source Code

  git clone git://


Randy Stauner <>


This software is copyright (c) 2010 by Randy Stauner.

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