<commit_before># Yeoman generator for AngularJS projects

> Opinionated Yeoman generator for creating Angular applications which lazy load components as needed at runtime.

## Table of contents
- [Getting started](#getting-started)
- [What's included](#what-s-included)
    - [SystemJS](#systemjs)
    - [JSPM](#jspm)
    - [AngularJS](#angularjs)
    - [UI Router](#ui-router)
    - [UI Router Extras](#ui-router-extras)
    - [ocLazyLoad](#oclazyload)
    - [Angular Lazy](#angular-lazy)
    - [Angular Lazy Bundler](#angular-lazy-bundler)
    - [Angular Translate](#angular-translate)
    - [Karma](#karma)
    - [Jasmine](#jasmine)
    - [Protractor](#protractor)
    - [SASS](#sass)
    - [Babel](#babel)
    - [Gulp](#gulp)
- [Structure](#structure)
    - [Application component](#application-component)
    - [State component](#state-component)
    - [General component](#general-component)
- [Gulp tasks](#gulp-tasks)
    - [default](#default)
    - [build](#build)
    - [serve](#serve)
    - [watch](#watch)
    - [test](#test)
    - [test-e2e](#test-e2e)
    - [compile-source](#compile-source)
    - [compile-stylesheets](#compile-stylesheets)
    - [htmlhint](#htmlhint)
    - [jshint](#jshint)
- [Troubleshooting](#troubleshooting)
    - [Missing dependencies](#missing-dependencies)
    - [Incompatible Angular modules](#incompatible-angular-modules)
    - [Protractor and Safari](#protractor-and-safari)
- [TODO](#todo)

## Getting started

To get started you'll need to install the Yeoman, JSPM, Gulp and Protractor CLI tools globally.

```bash
$: npm install -g yo jspm gulp protractor
```

Then, of course, you need to install the Angular Lazy generator itself.

```bash
$: npm install -g generator-angular-lazy
```

Now you can start using the generators described in the [structure section](#structure).

## What's included?
These are the main tools and libraries the project stack relies on.

### [SystemJS](https://github.com/systemjs/systemjs)
We're using the recently, in ECMAScript 2015, standardized module system. SystemJS builds up on these APIs to make it easier for us to modularize out code properly and to load those modules as they're needed. Since most browsers don't implement the module system natively SystemJS uses the [ES2015 Module Loader Polyfill](https://github.com/ModuleLoader/es6-module-loader) under the hood to close the gap.

Since the ES2015 module loader system is farly new most of the existing JavaScript libraries didn't have the chance yet to migrate to the new syntax. AMD and CommonJS are still the most used systems. SystemJS implements adapters for those module systems so that we're not blocked when it comes to use popular libraries like AngularJS or Lodash which do not yet use the new import / export syntax.<commit_msg>clean readme<commit_after># Yeoman generator for AngularJS projects

> Opinionated Yeoman generator for creating Angular applications which lazy load components as needed at runtime.

## Table of contents
- [Getting started](#getting-started)
- [What's included](#what-s-included)
    - [SystemJS](#systemjs)
    - [JSPM](#jspm)
    - [AngularJS](#angularjs)
    - [UI Router](#ui-router)
    - [UI Router Extras](#ui-router-extras)
    - [ocLazyLoad](#oclazyload)
    - [Angular Lazy](#angular-lazy)
    - [Angular Lazy Bundler](#angular-lazy-bundler)
    - [Angular Translate](#angular-translate)
    - [Karma](#karma)
    - [Jasmine](#jasmine)
    - [Protractor](#protractor)
    - [SASS](#sass)
    - [Babel](#babel)
    - [Gulp](#gulp)
- [Structure](#structure)
    - [Application component](#application-component)
    - [State component](#state-component)
    - [General component](#general-component)
- [Gulp tasks](#gulp-tasks)
    - [default](#default)
    - [build](#build)
    - [serve](#serve)
    - [watch](#watch)
    - [test](#test)
    - [test-e2e](#test-e2e)
    - [compile-source](#compile-source)
    - [compile-stylesheets](#compile-stylesheets)
    - [htmlhint](#htmlhint)
    - [eslint](#eslint)
- [Troubleshooting](#troubleshooting)
    - [Missing dependencies](#missing-dependencies)
    - [Incompatible Angular modules](#incompatible-angular-modules)
    - [Protractor and Safari](#protractor-and-safari)

## Getting started

To get started you'll need to install the Yeoman, JSPM, Gulp and Protractor CLI tools globally.

```bash
$: npm install -g yo jspm gulp protractor
```

Then, of course, you need to install the Angular Lazy generator itself.

```bash
$: npm install -g generator-angular-lazy
```

Now you can start using the generators described in the [structure section](#structure).

## What's included?
These are the main tools and libraries the project stack relies on.

### [SystemJS](https://github.com/systemjs/systemjs)
We're using the recently, in ECMAScript 2015, standardized module system. SystemJS builds up on these APIs to make it easier for us to modularize out code properly and to load those modules as they're needed. Since most browsers don't implement the module system natively SystemJS uses the [ES2015 Module Loader Polyfill](https://github.com/ModuleLoader/es6-module-loader) under the hood to close the gap.

Since the ES2015 module loader system is farly new most of the existing JavaScript libraries didn't have the chance yet to migrate to the new syntax. AMD and CommonJS are still the most used systems. SystemJS implements adapters for those module systems so that we're not blocked when it comes to use popular libraries like AngularJS or Lodash which do not yet use the new import / export syntax.
{'fraction_non_alphanumeric': 0.11966120021625518, 'fraction_numerical': 0.005406379527842855, 'mean_word_length': 4.087076076993584, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '438762', 'n_tokens_mistral': 1782, 'n_tokens_neox': 1580, 'n_words': 549}