### Paths Implementation
The System loader provides paths rules used by the standard `locate` function.
For example, we might want to load `jquery` from a CDN location. For this we can provide a paths rule:
```javascript
System.paths['jquery'] = '//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js';
System.import('jquery').then(function($) {
// ...
});
```
Any reference to `jquery` in other modules will also use this same version.
It is also possible to define wildcard paths rules. The most specific rule will be used:
```javascript
System.paths['lodash/*'] = '/js/lodash/*.js'
System.import('lodash/map').then(function(map) {
// ...
});
```
Rule specificity is determined by an exact paths match first, followed by the last deepest wildcard match.
### Custom Compilation Options
Custom [Traceur compilation options](https://github.com/google/traceur-compiler/wiki/Options-for-Compiling) can be set through `System.traceurOptions`, eg:
```javascript
System.traceurOptions = { annotations = true };
```
or if using Babel:
```javascript
System.babelOptions = { experimental: true };
```
or TypeScript:
```javascript
System.typescriptOptions = {};
```
### Finding the Transpiler
For Babel use the `browser.js` file contained in the `babel-core` npm module. For Traceur use the `traceur.js` file contained in the `traceur` npm module bin folder.
The transpiler is loaded as a module itself, so will follow normal paths rules.
>
To set custom paths to Babel or Traceur use paths configuration:
```javascript
System.paths['traceur'] = 'path/to/traceur.js';
```
Alternatively if you know that the transpiler will be needed, it will be detected from the global (`window[System.transpiler]`) when the first module is loaded, so can be loaded before ES6 Module Loader:
```html
```
> TypeScript can be loaded in the browser, but in Node, must already be defined as a global before loading an ES6 file.