NAME
Dist::Zilla::Plugin::LatestPrereqs - adjust prereqs to use latest version available
VERSION
version 0.4
SYNOPSIS
At the BOTTOM of your dist.ini
file:
[LatestPrereqs]
## Optionally skip core modules
[LatestPrereqs]
skip_core_modules = 1
DESCRIPTION
This plugin will filter over all your declared or discovered prerequisites, contact CPAN, and adjust the version to the latest one available.
This will make sure that your module will be installed with the latest version available on CPAN at the time you built your package.
The most common use for this techinique is for Task modules. You can rebuild your Task module on a regular basis to make sure it has the latest versions of your dependencies.
Please note that this plugin only makes sure that the version of the prereq is the latest at the time you build your package, not the latest at the time the package is installed.
To do that it would require updates to the CPAN toolchain. Although I would welcome that, this plugin implements the next best thing.
Core modules options
NOTE WELL: this feature should be considered alpha. The interface might change in future versions.
The option skip_core_modules
can be used to control the behaviour of this plugin with core modules (as defined by the Module::CoreList API).
If set to 1, we will skip forcing the latest version on modules that are part of the perl core, version equal or below to the one used to release the module.
An example: you have two modules on your [Prereqs]
list, Digest::SHA
part of the core since 5.009003, and HTTP::Tiny
part of the core since 5.013009. With skip_core_modules=1
, the following will happen:
If you release your module using perl 5.008009, both
Digest::SHA
andHTTP::Tiny
will be forced to the lastest version.If you release your module using perl 5.012003, the
Digest::SHA
will not be forced to the lastest version, butHTTP::Tiny
will.If you release your module using perl 5.014000, both
ExtUtils::MakeMaker
andHTTP::Tiny
will not be forced to the lastest version.
By default (0) all modules will get the latest version.
Idealy we would make this decision based on the perl version of the person that will install your distribution, but for now that is not easy to do.
EXTRA REQUIREMENTS
This plugin uses the CPAN module, but hides the output, so make sure you have your cpan shell properly configured before trying to use this.
BUGS
This modules abuses the internals of the CPAN::Meta::Prereqs module. This is a bug, but right now that module does not provide an API to traverse its internals.
As soon as it does, I'll rewrite this module to use it.
Until then, this module might break with new releases of CPAN::Meta::Prereqs.
CREDITS
Marcel Gruenauer (hanekomu) described something like this in his article "Repeatedly installing Task::* distributions":
http://hanekomu.at/blog/dev/20091005-1227-repeatedly_installing_task_distributions.html
But the method he suggested does not work because it does not force the latest version of the module to be installed.
A Dist::Zilla plugin that implements what Marcel describes is also available, see Dist::Zilla::Plugin::MakeMaker::SkipInstall.
Mike Doherty added the first version of the skip core modules feature.
SEE ALSO
Dist::Zilla, Dist::Zilla::Plugin::MakeMaker::SkipInstall.
AUTHOR
Pedro Melo, <melo at cpan.org>
COPYRIGHT & LICENSE
Copyright 2009-2010 Pedro Melo.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.