Ember App Kit aims to be the foundation for ambitious web applications built with Ember. It will soon be replaced by an executable ember-cli which dramatically improves buildtimes (via broccoli) and provides sane-upgrade paths, feel free to check that project out. We intend to provide a sensible upgrade path.
This project has been extracted out of several real world applications and is actively used. Currently it covers the basics fairly well, but much still needs to be done. As we learn and as more contributors join in it continues to evolve. If you encounter any bugs, clunky features or missing documentation, just submit an issue and we'll respond ASAP.
At the very least, it helps setup your Ember.js applications directory structure.
We welcome ideas and experiments.
- Project Documentation Site
- Getting Started Guide
- ember-app-kit-todos - the Emberjs todos using Ember App Kit
- ember-app-kit-bloggr - bloggr demo
- Safari Books Online Blog - Introduction to Ember App Kit for more experienced Ember developers by @mixonic
- Ember Sherpa - Introduction to Ember App Kit for those who are new to the Grunt workflow by @taras
- Sane project structure
- ES6 module transpiler support (easy, future-proof modules)
- Module system-aware resolver (see Referencing views and Using Ember loaders)
- Transparent project compilation & minification for easy deploys via Grunt
- Package management via Bower
- Optional support for CoffeeScript, SASS, LESS or Stylus
- Testing via QUnit, Ember Testing and Testem (with examples)
- Linting via JSHint (including module syntax)
- Catch-all
index.htmlfor easy reloading of pushState router apps - Generators via Loom (to generate routes, controllers, etc.)
- Source maps for transpiled modules
- Easier to install 3rd party packages
- Faster, more intelligent builds
Think anything else is missing? Feel free to open an issue (or, even better, a PR)! Discussion and feedback is always appreciated.
First, install ember-cli with npm install -g ember-cli. Now, on top of
your EAK project, run ember init. Ember CLI will begin to migrate your
project. You may diff the files it overwrites as it goes along. A
detailed list will be provided next to help you along, but first, feel free to remove the
Gruntfile, the tasks directory, and the api-stub, since we won't be needing them
anymore.
rm Gruntfile.js && rm -rf tasks && rm -rf api-stub
- tests/.jshintrc
- Let ember-cli overwrite this
- app/index.html
- Let ember-cli overwrite this
- app/app.js
- app/app.js
- app/router.js
- The only change here is that the Router's location is now handled by the config. Change this to ENV.locationType if you need to.
- app/routes/index.js
- This will attempt to replace your IndexRoute with a stub. Don't let it override this file.
- Brocfile.js
- This essentially replaces your Gruntfile. Let ember-cli add this file.
- app/templates/application.hbs
- This will attempt to replace your application template with a stub. It will also add it if you are using Emblem. You can safely skip this step.
- app/styles/app.css
- This will attempt to replace your app style with a stub. You can safely skip this step.
- tests/index.html
- Let ember-cli add this file.
- bower.json
- package.json
- server
- The express server has been exposed and now lives under this directory.
Once this step is done, ember-cli will attempt to upgrade your project. When its done, run ember server, and you're done!
When you run ember server, you may get errors about files not existing. You'll have to refresh your dependencies by removing the node_modules
directory, clearing the cache, and rerunning npm & bower install.
- Import
tests/helpers/start-appinto each acceptance test file.import startApp from 'your-app/tests/helpers/start-app
- Import testing dependencies
- Instead of using your app/index.html file, these can now be imported
from the Brocfile.
- For example,
app.import('vendor/ember-data/ember-data.js')
- For example,
- If you were using ember-testing-httpRespond
- This is now patched for 1.4+
- Import it and its dependencies in your Brocfile by using
app.import()
- Instead of using your app/index.html file, these can now be imported
from the Brocfile.
Some ideas in ember-app-kit originated in work by Yapp Labs (@yapplabs) with McGraw-Hill Education Labs (@mhelabs) on yapplabs/glazier. Thanks to Yapp and MHE for supporting the Ember ecosystem!
Copyright 2013 by Stefan Penner and Ember App Kit Contributors, and licensed under the MIT License. See included LICENSE file for details.
