Dist::Zilla::Plugin::LatestPrereqs - adjust prereqs to use latest version available
At the BOTTOM of your
[LatestPrereqs] ## Optionally skip core modules [LatestPrereqs] skip_core_modules = 1
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.
NOTE WELL: this feature should be considered alpha. The interface might change in future versions.
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
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:
HTTP::Tinywill be forced to the lastest version.
Digest::SHAwill not be forced to the lastest version, but
HTTP::Tinywill 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.
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.
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.
Marcel Gruenauer (hanekomu) described something like this in his article "Repeatedly installing Task::* distributions":
But the method he suggested does not work because it does not force the latest version of the module to be installed.
Mike Doherty added the first version of the skip core modules feature.
<melo at cpan.org>
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.