bower/bower.json-spec — pull request #8 by josh (2013-11-12 07:02:29+00:00)
Title: Main is an alias

Regardless of an extension to `main` being accepted #7, I want to clarify the original `main` intent and how build tools are already using it.

`main` is a way to alias the package name to a file inside the package. Its a convenience to package authors so they can organize their internal directories however they wish but still export there module as a simple symbol.

Bower already understands the `index.js` convention. Again taken from node, but Sprockets also supports it as well. When you install a package from a url, it writes to `foo/index.js`. `index.js` is the implicit value of `main`.

`index` is fine, but not everything wants to name their file that in the package. `main` is a way to rewrite that path to another.