2013-09-27 10:16:16 +02:00
JSPM Registry
2013-09-16 11:23:44 +02:00
---
2013-11-12 16:59:12 +02:00
Pull requests welcome. View `registry.json` to see what is currently in the registry.
2013-09-16 11:23:44 +02:00
2013-11-12 17:13:53 +02:00
All registry entries are managed here through Github, moderated by the registry maintainers.
2013-09-27 10:16:16 +02:00
2013-11-12 17:13:31 +02:00
What it does
2013-09-16 11:23:44 +02:00
---
2013-11-12 17:13:31 +02:00
### 1. Endpoint Mappings (registry.json)
2013-09-16 11:23:44 +02:00
2013-11-12 17:13:31 +02:00
Modules are served from _endpoint servers_ . Endpoints include `github:` , `npm:` and `cdnjs:` , and anyone can submit a new endpoint, provided it meets certain requirements.
2013-09-16 11:23:44 +02:00
2013-11-12 17:15:40 +02:00
If I want to load Twitter Bootstrap directly from the Github endpoint with the [JSPM loader ](https://github.com/jspm/jspm-loader ), I would write the following:
2013-09-16 11:23:44 +02:00
2013-11-12 17:13:31 +02:00
```javascript
jspm . import ( 'github:twbs/bootstrap@3.0/js/bootstrap' );
```
2013-09-16 11:23:44 +02:00
2013-11-12 17:25:43 +02:00
The loader then sends a request to the URL `https://github.jspm.io/twbs/bootstrap@3.0/js/bootstrap.js` and the **Github endpoint server** , returns the associated code.
2013-11-12 17:13:31 +02:00
The registry simply remembers the `github:twbs/bootstrap` part, allowing the shortcut form:
```javascript
jspm . import ( 'bootstrap@3.0/js/bootstrap' );
```
2013-11-12 17:18:29 +02:00
The `registry.json` is just a collection of these mappings:
```javascript
"bootstrap" : "github:twbs/bootstrap"
```
Anyone is welcome to submit a mapping.
The current supported endpoint servers are:
* Github (SPDY optimized)
* npm (SPDY optimized)
2013-11-12 17:30:55 +02:00
* cdnjs
2013-11-12 17:18:29 +02:00
To add a new endpoint server to the registry, provide a pull request to `endpoints.json` .
2013-11-12 17:13:31 +02:00
### 2. Package.json Overrides (package_overrides)
The registry also provides a service for overriding the `package.json` of existing repos.
This is because JSPM uses the `package.json` for modular package configuration, including:
* Setting the main entry point (`main` )
* Shim config for globals (`shim` )
* Auto-enabling minification (`buildOptions.uglify` )
In this way, the right package options can make any library play well with JSPM, without needing any manual configuration at all.
2013-11-12 17:24:28 +02:00
Read more about [configuring packages for JSPM ](https://github.com/jspm/registry/wiki/Configuring-Packages-for-JSPM ) in the wiki.
2013-11-12 17:30:22 +02:00
To submit a new package override:
* Fork this repo, then create the file `package_overrides/[endpoint name]/[repo name]@x .y.z.json.
* Provide the correct configuration according to the configuration guide above.
* Submit a pull request.
* If the configuration is correct, this will be accepted and that will instantly enable the functionality on the endpoint.
The overrides only apply to exact version, tag or branch names.
2013-11-12 17:30:55 +02:00
Note that package overrides do not work for the cdnjs endpoint, so manual configuration is still necessary here.
2013-11-12 17:30:22 +02:00