ng2-webpack
A complete, yet simple, starter for Angular 2 using webpack
Inspired by Angular2 Webpack Starter & Angular 1 Webpack workflow.
This seed repo serves as an Angular 2 starter for anyone looking to get up and running with Angular 2 and TypeScript fast. Using a Webpack for building our files and assisting with boilerplate. We're also using Protractor for our end-to-end story and Karma for our unit tests.
- Best practices in file and application organization for Angular 2.
- Ready to go build system using Webpack for working with TypeScript.
- Easily add new components using Angular 2 cli.
- Testing Angular 2 code with Jasmine and Karma.
- Coverage with Istanbul
- End-to-end Angular 2 code using Protractor.
- Stylesheets with SASS (not required, it supports regular css too).
- Error reported with TSLint.
- Documentation with TypeDoc.
Warning: Make sure you're using the latest version of Node.js and NPM
Quick start
Clone/Download the repo then edit
app.ts
inside/src/app/app.ts
# clone our repo
git clone https://github.com/ocombe/ng2-webpack.git
# change directory to our repo
cd ng2-webpack
# install the repo with npm
npm install
# start the server
npm start
go to http://localhost:3000 in your browser
Table of Contents
Getting Started
Dependencies
What you need to run this app:
node
andnpm
(brew install node
)- Ensure you're running the latest versions Node (
v4.1.x
+) and NPM (2.14.x
+)
Installing
fork
this repoclone
your forknpm install
to install all dependencies
Running the app
After you have installed all dependencies you can now run the app with:
npm start
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:3000
(or if you prefer IPv6, if you're using express
server, then it's http://[::1]:3000/
).
Developing
Add new components, services, pipes with Angular 2 cli
npm install -g angular-cli
to install Angular 2 cli- Add a new component with:
ng generate component my-new-component
- Add a new service with:
ng generate service my-new-service
- Add a new pipe with:
ng generate pipe my-new-pipe
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
2. End-to-End Tests (aka. e2e, integration)
- single run:
- in a tab, if not already running!:
npm start
- in a new tab:
npm run webdriver-start
- in another new tab:
npm run e2e
- in a tab, if not already running!:
- interactive mode:
- instead of the last command above, you can run:
npm run e2e-live
- when debugging or first writing test suites, you may find it helpful to try out Protractor commands without starting up the entire test suite. You can do this with the element explorer.
- you can learn more about Protractor Interactive Mode here
- instead of the last command above, you can run:
Documentation
You can generate api docs (using TypeDoc) for your code with the following:
npm run docs
FAQ
Coming Soon
We will post common Q&A as they arise
TypeScript
To take full advantage of TypeScript with autocomplete you would have to install it globally and use an editor with the correct TypeScript plugins.
Use latest TypeScript compiler
TypeScript 1.7.x includes everything you need. Make sure to upgrade, even if you installed TypeScript previously.
npm install --global typescript
Use a TypeScript-aware editor
We have good experience using these editors:
- Visual Studio Code
- Webstorm 11+
- Atom with TypeScript plugin
- Sublime Text with Typescript-Sublime-Plugin
Contributing
Please follow these basic steps to simplify pull request reviews:
- Please rebase your branch against the current master
- Run
npm install
to make sure your development dependencies are up-to-date - Please ensure that the test suite passes
npm test
before submitting a PR - If you've added new functionality, please include tests which validate its behavior
- Make reference to possible issues on PR comment
Submitting bug reports
- Please detail the affected browser(s) and operating system(s)
- Please be sure to state which version of node and npm you're using
Other Seed/Example Repos
- angular2-webpack-starter (AngularClass)
- Client/Server, Webpack, TypeScript, TSD, Protractor, Karma, Jasmine
- ng2-play (Pawel Kozlowski)
- Client only, Minimalist, SystemJS, Gulp, TypeScript
- angular2-seed (Minko Gechev)
- Client only, SystemJS, Gulp, TypeScript, TSD, Versioned, Env Dev/Prod
- ng2-lab (Roland Groza)
- Client only, ES6, TypeScript, Firebase, Gulp, Ci, TSD, TSLint
- ng2-jspm-seed (Rob Wormald)
- Client only, TypeScript, TSD, Gulp, JSPM, Minimalist
- babel-angular2-app (Shuhei Kagawa)
- Client only, Minimalist, Babel, ES6+, browserify