Module::Install::CPANfile - Include cpanfile


  # cpanfile
  requires 'Plack', 0.9;
  on test => sub {
      requires 'Test::Warn';

  # Makefile.PL
  use inc::Module::Install;
  name 'Dist-Name';
  all_from 'lib/Dist/';
  # ...


Module::Install::CPANfile is a plugin for Module::Install to include dependencies from cpanfile into meta files. MYMETA files are always merged with cpanfile, as well as META files when you run Makefile.PL as an author mode (as in preparation for make dist).


If you have read cpanfile and cpanfile-faq you might wonder why this plugin is necessary, since cpanfile is meant to be used by Perl applications and not distributions.

Well, for a couple reasons.

Co-exist as a Github project and CPAN distribution

One particular use case is a script or web application that you develop on github, and you start with writing dependencies in cpanfile. Other users or developers pull the code from git, use carton to bundle dependencies. So far, so good.

One day you decide to release the script or application to CPAN as a CPAN distribtuion, and that means you have to duplicate cpanfile into Makefile.PL or Build.PL, and that's not DRY! This plugin will allow you to have just one cpanfile and reuse it from Makefile.PL for CPAN client use.

CPAN Meta Spec 2.0 support.

The other, kind of unfortunate reason is that as of this writing, Module::Install and ExtUtils::MakeMaker don't have a complete support for expressing CPAN::Meta::Spec version 2.0 vocabularies.

There are many of known issues that the metadata you specify with Module::Install are somehow discarded or down converted, and eventually lost in MYMETA files. The examples of those issues are that test dependencies gets merged with build dependencies, and that recommends is not saved into MYMETA files.

This plugin lets you write prerequisites in cpanfile which is more powerful and has a complete support for CPAN::Meta::Spec 2.0 and makes your application forward compatible.


Tatsuhiko Miyagawa <>


Copyright 2012- Tatsuhiko Miyagawa


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


cpanfile Module::CPANfile Module::Install