Tatsuhiko Miyagawa's Blog

stop shipping MYMETA to CPAN

February 28, 2013

You’re a new CPAN author (congratulations!) or you have an old distribution that is about to be updated for the first time in years, and you find MYMETA.yml and MYMETA.json in your working directory that git or shipit warns about. You think: What are these files? Should I package these files?

tl;dr — add MYMETA.yml and MYMETA.json to .gitignore and MANIFEST.SKIP (if you have one), and do not include them in the tarball.

MYMETA.yml/json files are a relatively new approach for CPAN installers (CPAN, CPANPLUS, cpanm) and module build tools (MakeMaker, Module::Build) to communicate the configured dependencies on the end-user’s system.

MYMETA is just like META files in terms of the file format and data structure, but whereas META.yml is generated by the distribution author (you), MYMETA.yml is generated by the end user at a configuration time.

Including MYMETA files in MANIFEST and a distribution tarball does not make any sense, and could cause potential problems confusing CPAN installers — do not make them part of your distribution.

(Why this post? Many CPAN authors have been confused or unaware what MYMETA files are and simply include them in the distribution)