Summary

Change the publish script to support idiomatic CommonJS usage when
installed from npm.

Motivation

Now that the Angular modules are available on npm, supporting proper
CommonJS use via require() is the next logical step. This use case is
widely expected by developers using npm for dependency management.


Without this change, developers still have to use a script tag to include
Angular modules from within the node_modules folder. This is extremely
uncommon with npm packages, and does nothing to enable Browserify and
webpack support.

Compatibility Risk

Little to no risk as only the publish shell script needs to be changed.

Ongoing Technical Constraints

There should be virtually no ongoing maintenance needed since it's just a
publish script.

Plans for Implementation

Simple changes to the publish script will be made to remove the main field
from the package.json files and generate an index.js file for each package
so that it is used when requiring by name. The index.js file will require()
the standard built file and export a value(s) appropriate for the module.


The core angular module will export the angular object.


The supporting modules will export their module name (ngAnimate, ngRoute,
etc.) with the exception of angular-mocks, which exports 3 values: ngMock,
ngMockE2E, ngAnimateMock


This would enable code akin to the following:


var angular = require('angular');

angular.module('app', [

require('angular-animate'),

require('angular-route'),

require('angular-mocks').ngMock

]);

Prior Art
The overwhelming expectation, when a developer installs a package from npm,
is that they can then use require('package-name') to load it. This change
will bring Angular in line with the rest of the npm ecosystem.

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to