Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cmelion/generator-ng2-webpack
An opinionated tool for scaffolding an app using angular2 and webpack
https://github.com/cmelion/generator-ng2-webpack
Last synced: about 2 months ago
JSON representation
An opinionated tool for scaffolding an app using angular2 and webpack
- Host: GitHub
- URL: https://github.com/cmelion/generator-ng2-webpack
- Owner: cmelion
- License: mit
- Created: 2016-03-01T02:31:43.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2016-11-28T16:18:28.000Z (about 8 years ago)
- Last Synced: 2024-10-11T14:07:03.223Z (2 months ago)
- Language: JavaScript
- Homepage:
- Size: 8.93 MB
- Stars: 109
- Watchers: 11
- Forks: 18
- Open Issues: 21
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-angular-components - generator-ng2-webpack - An opinionated tool for scaffolding an app using angular2 and webpack. (Uncategorized / Uncategorized)
- awesome-angular-components - generator-ng2-webpack - An opinionated tool for scaffolding an app using angular2 and webpack. (Uncategorized / Uncategorized)
README
Now that Angular2 has moved to Webpack, the need for this generator is less of a priority for me. I'm working on a [new one](https://github.com/cmelion/generator-redux-observable) based on [Redux-Observable](https://github.com/redux-observable/redux-observable) that will support either Angular2 or React as well as a seamless mixture of the two. Work on this repo will be limited to bug-fixes and pull-requests.
[![NPM](https://nodei.co/npm/generator-ng2-webpack.png?downloads=true)](https://npmjs.org/package/generator-ng2-webpack)
[![Join the chat at https://gitter.im/cmelion/generator-ng2-webpack](https://badges.gitter.im/cmelion/generator-ng2-webpack.svg)](https://gitter.im/cmelion/generator-ng2-webpack?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
# generator-ng2-webpack
An opinionated [BYOBE](http://nobackend.org/2013/11/cross-origin-backend.html) tool ([Yeoman](http://yeoman.io) generator) for scaffolding an app using angular2 and webpack
We like React too! So if you have some react components you want to use in your Angular 2 apps we will be adding a sub-generator very soon!
For now check out the about component in the [generated app](//cmelion.github.io/generator-ng2-webpack/about) for a taste of what you can do.# Credits
This generator was inspired by:
* https://github.com/preboot/angular-webpack
* https://github.com/AngularClass/angular2-webpack-starter
* https://github.com/mcfly-io/generator-ng2-webpack
* http://www.syntaxsuccess.com/viewarticle/integrating-react-with-angular-2.0![Demo App](http://www.masterbrandlk.com/smsdemo/image/demo_icon.jpg)
[Sample generator output](//github.com/cmelion/ng2-webpack-demo-app)
## Installation
First, install [Yeoman](http://yeoman.io) and generator-ng2-webpack using [npm](https://www.npmjs.com/). If you don't already have node.js/npm installed, we recommend using [nvm](https://github.com/creationix/nvm) (windows users may want to consult the [wiki](https://github.com/cmelion/generator-ng2-webpack/wiki/NVM-installation-for-Windows)).
```bash
npm install -g yo
npm install -g generator-ng2-webpack
```Then generate your new project:
```bash
# create an application directory
$mkdir my-app# change directory to your app
$ cd my-appyo ng2-webpack [project-name]
```You then have access to the following sub generators:
* **yo ng2-webpack:service** (Creates a service)
* **yo ng2-webpack:pipe** (Creates a pipe)
* **yo ng2-webpack:component** (Creates a component)
* **yo ng2-webpack:directive** (Creates a directive)
* **yo ng2-webpack:interface** (Creates an interface)Resulting in a complete, yet simple, starter for Angular using Webpack.
You may prefer to use npm to run your sub-generators.
For a complete list of available commands and to add tab auto-completion, run the following commands in a terminal:$ npm completion >> ~/.bashrc
$ source ~/.bashrc
$ npm run
which will produce the following output
```build docker-open-terminal e2e-live new-service watch
ci docker-server lint postinstall webdriver-start
clean docker-start new-component server webdriver-update
clean-install docker-stop new-directive start
clean-start docs new-interface test
delayed-open e2e new-pipe test-watch
```This workflow serves as a starting point for building component based Angular 2.0 applications using Webpack.
* Heavily commented webpack configuration with reasonable defaults.
* ES6, and ES7 support with babel.
* Source maps included in all builds.
* Development server with live reload.
* Production builds with cache busting.
* Testing environment using karma to run tests and jasmine as the framework.
* Code coverage when tests are run.
* No gulp and no grunt, just npm scripts.>Warning: Make sure you're using the latest version of Node.js and NPM
### Quick start
```bash
# change directory to your app
$ cd my-app# start the server
$ npm start
```go to [http://localhost:2368](http://localhost:2368) in your browser.
# Table of Contents
* [Getting Started](#getting-started)
* [File Structure](#file-structure)
* [Dependencies](#dependencies)
* [Installing](#installing)
* [Running the app](#running-the-app)
* [Developing](#developing)
* [Testing](#testing)
* [Roadmap](#roadmap)
* [FAQ](#frequently-asked-questions)
* [License](#license)# Getting Started
## File Structure
```
├── app/ * top level web app component folder
│ ├── components/ * subcomponents
│ │ ├── about/ * example page level component folder
│ │ │ ├── index.async.ts * .async indicates that the component will be asychronously loaded
│ │ │ ├── spec.ts * unit test
│ │ │ ├── style.scss * css styles, could be css, less or sass
│ │ │ └── template.html * component's html template
│ │ └── home/ * example main page level component
│ │ ├── e2e.js * end-to-end test for home
│ │ ├── index.ts * a simple synchronous component
│ │ ├── spec.ts *
│ │ ├── style.scss *
│ │ └── template.html *
│ ├── e2e.js * end-to-end test for the app component
│ ├── index.ts * the app component
│ ├── root.spec.ts * the main entry point for hierarchically nested tests.
│ ├── services/ * app level service folder
│ │ └── api/ * example application level service folder
│ │ ├── index.ts * example service
│ │ └── spec.ts * unit test associated with example service
│ ├── style.scss * application component specific styles
│ └── template.html * application component html template
├── bootstrap.ts * application entry point (bootstrap)
├── public/ * static public facing resources
│ ├── img/ * global/top level icons and images
│ └── index.html * the html index page where it all starts
├── shims/ * shims an polyfills for non-compliant browsers
│ └── shims_for_IE.js * sample shim
├── style/ *
│ └── app.scss * styles required by the index page
└── vendor.ts * this is where we import shims/polyfills and core third party libraries
```## Dependencies
What you need to run this app:
* `node` and `npm` (Use [NVM](https://github.com/creationix/nvm))
* Ensure you're running Node (`v4.1.x`+) and NPM (`2.14.x`+)## Installing
```bash
# create an application directory
$mkdir my-app# change directory to your app
$ cd my-appyo ng2-webpack [project-name]
```
That's it!## Running the app
After you have installed all dependencies you can now run the app with:
```bash
npm start
```
or (if you want to automatically open a browser window)```bash
npm delayed-open
```
It will start a local server using `webpack-dev-server` which will watch, build (in-memory), and reload for you. The port will be displayed to you as `http://localhost:2368`.## Developing
### Build files
* single run: `npm run build`
* build files and watch: `npm run watch`## Testing
#### 1. Unit Tests
* single run: `npm test`
* live mode (TDD style): `npm run test-watch`## Roadmap
* Mocking with [JSON Server](https://github.com/typicode/json-server) - see [working example](https://github.com/cmelion/ng2-webpack-demo-app)
* [Docker](https://www.docker.com/) integration
* Support for [Eclipse Che](https://github.com/eclipse/che)## Frequently asked questions
* How do I async load a component?
* see wiki [How-do-I-async-load-a-component-with-AsyncRoute](https://github.com/cmelion/generator-ng2-webpack/wiki/How-do-I-async-load-a-component-with-AsyncRoute%3F)
* I hate that all the files are named index.ts, style.scss and template.html and what happened to my.controller.ts, etc?
* While it's mostly personal preference, there are several good reasons for standardized filenames, see [filename conventions](https://github.com/cmelion/generator-ng2-webpack/wiki/I-hate-that-all-the-files-are-named-index.ts,-style.scss-and-template.html!)
* In a component based architecture almost everything is a component, checkout [what happened to my .controller. ?](https://github.com/cmelion/generator-ng2-webpack/wiki/What-happened-to-my.controller.ts,-etc%3F)
* [Why should I use a generator?](https://github.com/cmelion/generator-ng2-webpack/wiki/Why-should-I-use-a-generator%3F)
* How do I run docker commands from the npm tool window?
* Install docker run: `npm install -g docker-run`
* see wiki [Docker Workflow explained](https://github.com/cmelion/generator-ng2-webpack/wiki/Why-Docker%3F)
* How do I [import third party/vendor libs](https://github.com/cmelion/generator-ng2-webpack/wiki/Importing-vendor-libs)?
* How do I add Material-Design-Lite(MDL) to a project?
* see wiki [Working with MDL](https://github.com/cmelion/generator-ng2-webpack/wiki/Working-with-Material-Design-Lite)# License
[MIT](/LICENSE)