Module::Build::JSAN - Build JavaScript distributions for JSAN


In Build.PL:

  use Module::Build::JSAN;

  my $build = Module::Build::JSAN->new(
      module_name    => 'Foo.Bar',
      license        => 'perl',
      keywords       => [qw(Foo Bar pithyness)],
      requires     => {
          'JSAN'     => 0.10,
          'Baz.Quux' => 0.02,
      build_requires => {
          'Test.Simple' => 0.20,


To build a distribution:

  % perl Build.PL
  % ./Build dist


This is a developer aid for creating JSAN distributions. JSAN is the "JavaScript Archive Network," a JavaScript library akin to CPAN. Visit for details.

This module works nearly identically to Module::Build, so please refer to its documentation.


1 META.json

JSAN uses the JSON format instead of the YAML format for META files, as JSON is legal Javascript and just plain easier to work with. This means that Module::Build::JSAN will generate META.json files instead of META.yml files. Do not be alarmed. See for more information on JSON.

2 ./Build deps

This is a new action added to Module::Build::JSAN. Run this action in order to update your JSAN dependencies while developing your JSAN library. This will allow you to develop against the latest versions of the distributions upon which your library depends.

3. ./Build dist

This action overrides that provided by Module::Build to extract all documentation from your source files or from doc/pod and convert them into HTML and plain text representations in doc/html and doc/text, respectively. This keeps your .js libraries free of the weight of documentation in the distribution.

4. Version, Abstract, Author

Like Module::Build, Module::Build::JSAN will extract the module version number, abstract, and author from the JavaScript file for which the distribution is named. The abstract and author will only be extracted if they are specified in POD in the mode of Perl CPAN modules, i.e.:


  =head1 NAME

  Foo.Bar - Foo your Bar, baby

  =head1 AUTHOR

  Joe Developer <>


The version number will be parsed from the JavaScript code only if it is specified in one of the following manners:

  Foo.Bar.VERSION = '0.34';

  Foo.Bar = {
      VERSION: '0.34'

If none of these options works for you for some reason, just specify the abstract, author, and version number in your Build.PL file:

  my $build = Module::Build::JSAN->new(
      module_name    => 'Foo.Bar',
      dist_author    => 'Joe Developer <>',
      dist_abstract  => 'Say something pithy here',
      dist_version   => '0.34',
      # ...


Home of the JavaScript Archive Network.

Home page for JSON, the JavaScript Object Notation, which the format used in the META.json file generated by this module.

The description of JavaScript namespaces on which JSAN modules are based.


This module is stored in an open repository at the following address:

Patches against Module::Build::JSAN are welcome. Please send bug reports to Please send bug reports to <>.


David Wheeler <>
Casey West <>
Rob Kinyon <>


Copyright 2005-2009 by David Wheeler, Casey West, and Rob Kinyon. Some Rights Reserved.

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