NAME
Dist::Zilla::PluginBundle::Starter - A minimal Dist::Zilla plugin
bundle
SYNOPSIS
; dist.ini
name = My-Cool-Distribution
author = Example Jones <
[email protected]>
license = Perl_5
copyright_holder = Example Jones
copyright_year = 2016
version = 0.001
[@Starter] ; all that is needed to start
revision = 1 ; always defaults to revision 1
-remove = GatherDir ; to use [Git::GatherDir] instead, for example
ExecDir.dir = script ; change the directory used by [ExecDir]
DESCRIPTION
The [@Starter] plugin bundle for Dist::Zilla is designed to do the
minimal amount of work to release a complete distribution reliably. It
is similar in purpose to [@Basic], but with additional features to stay
up to date and allow greater customization. The selection of included
plugins is intended to be unopinionated and unobtrusive, so that it is
usable for any well-formed CPAN distribution.
[@Starter] composes the PluginRemover and Config::Slicer roles to make
it easier to customize and extend. Also, it supports bundle revisions
specified as an option, in order to incorporate future changes to
distribution packaging and releasing practices. Existing revisions will
not be changed to preserve backwards compatibility.
The FAKE_RELEASE environment variable is supported as in Dist::Milla
and Minilla. It replaces the [UploadToCPAN] plugin with [FakeRelease],
to test the release process (including any version bumping and
commits!) without actually uploading to CPAN.
$ FAKE_RELEASE=1 dzil release
REVISIONS
The [@Starter] plugin bundle currently includes only one revision.
1
Revision 1 is the default and is equivalent to using the following
plugins:
[GatherDir]
[PruneCruft]
[ManifestSkip]
[MetaConfig]
[MetaProvides::Package]
[MetaNoIndex]
directory = t
directory = xt
directory = inc
directory = share
directory = eg
directory = examples
[MetaYAML]
[MetaJSON]
[License]
[ReadmeAnyFromPod]
[ExecDir]
[ShareDir]
[PodSyntaxTests]
[Test::ReportPrereqs]
[Test::Compile]
xt_mode = 1
[MakeMaker]
[Manifest]
[TestRelease]
[RunExtraTests]
[ConfirmRelease]
[UploadToCPAN]
This revision differs from [@Basic] as follows: using
[ReadmeAnyFromPod] instead of [Readme]; using [RunExtraTests] instead
of [ExtraTests]; and including the following additional plugins:
[MetaJSON], [MetaConfig], [MetaProvides::Package], [MetaNoIndex],
[PodSyntaxTests], [Test::ReportPrereqs], [Test::Compile].
CONFIGURING
By using the PluginRemover or Config::Slicer role options, you can
customize the [@Starter] bundle's included plugins as desired. Here are
some examples:
GatherDir
If you are using git source control, you may wish to replace the
default [GatherDir] plugin with [Git::GatherDir].
[Git::GatherDir]
[@Starter]
-remove = GatherDir
Readme
The [ReadmeAnyFromPod] plugin generates a plaintext README from the POD
text in the distribution's "main_module" in Dist::Zilla by default, but
can be configured to look elsewhere. The standard README should always
be plaintext, but if you want to generate a non-plaintext README in
addition, you can simply use the plugin a second time. Note that
POD-format READMEs should not be included in the distribution build
because they will get indexed and installed due to an oddity in CPAN
installation tools.
[@Starter]
ReadmeAnyFromPod.source_filename = bin/foobar
[ReadmeAnyFromPod / Markdown_Readme]
type = markdown
filename = README.md
[ReadmeAnyFromPod / Pod_Readme]
type = pod
location = root ; do not include pod readmes in the build!
ExecDir
Some distributions use the script directory instead of bin (the
[ExecDir] default) for executable scripts.
[@Starter]
ExecDir.dir = script
MetaNoIndex
You may wish to specify that additional files or directories are not
indexed as CPAN modules. (See "CONFIGURATION SYNTAX" in
Config::MVP::Slicer for an explanation of the subscripts for slicing
array attributes.)
[@Starter]
MetaNoIndex.file[0] = eggs/FooBar.pm
MetaNoIndex.directory[a] = eggs
MetaNoIndex.directory[b] = bacon
EXTENDING
This bundle includes a basic set of plugins for releasing a
distribution, but there are many more common non-intrusive tasks that
Dist::Zilla can help with simply by using additional plugins in your
dist.ini.
Name
To automatically set the distribution name from the current directory,
use [NameFromDirectory].
License and Copyright
To extract the license and copyright information from the main module,
and optionally set the author as well, use [LicenseFromModule].
Versions
To automatically extract the distribution's version from the main
module and bump it after a release, you can use either [RewriteVersion]
with [BumpVersionAfterRelease], or [VersionFromModule] with
[ReversionOnRelease]. Don't mix these two approaches!
Changelog
To automatically add the new release version to the distribution
changelog, use [NextRelease]. To ensure the release has changelog
entries, use [CheckChangesHasContent].
Git
To better integrate with a git workflow, use the plugins from [@Git].
To automatically add contributors to metadata from git commits, use
[Git::Contributors].
Resources
To automatically set resource metadata from an associated GitHub
repository, use [GithubMeta]. To set resource metadata manually, use
[MetaResources].
Prereqs
To automatically set distribution prereqs from a cpanfile, use
[Prereqs::FromCPANfile]. To specify prereqs manually, use [Prereqs].
BUGS
Report any issues on the public bugtracker.
AUTHOR
Dan Book <
[email protected]>
COPYRIGHT AND LICENSE
This software is Copyright (c) 2016 by Dan Book.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)
SEE ALSO
Dist::Zilla, Dist::Zilla::PluginBundle::Basic