DEPRECATED -- See angular-curve
You should develop AngularJS without having to set anything up. This is the only AngularJS development stack you will ever need!
NOTE: This skeleton uses Harp.js and Brunch.IO.
ng-brunch uses only Brunch.IO and you
could still include a app/assets/_harp.json
to make it work on Harp.io.
For AngularJS development, angular-seed is a great starting point. ngBoilerplate is a fantastic improvement over angular-seed. Though you still need to install a bunch of dependencies and tinker with the Gruntfile unless you follow the ngBoilerplate way completely.
Rather than handling everything as a monolithic development stack, ng-musical-brunch offloads the assembly workflow to Brunch and a development server using Harp. You need additional language support? Check out the Brunch plugins page and you're set. Need to run your AngularJS app locally as staging? No problem. Harp.io to the rescue.
- Get Grunt:
npm install -g grunt
- Get this repo:
git clone https://github.com/kenhkan/ng-musical-brunch.git
- Get NPM deps:
npm install
Easy as 1-2-3-4-5:
- Open up
404.jade
and edit the$PROCESS_ENV
variables. In the future these will be populated using environment variables. See app settings for more info. - Replace
$APP_NAME
with your app name. This will be automated in a setup script in the future. - Set the environment variable
APP_NAME
to your app's name - Run
grunt
to get Karma running, watching for file changes, and a Harp server running in the background - Open
localhost:9000
in the newly Karma-opened browser to view your app
Development mode:
- Start watching for file changes
- Start up Karma
- Spin up a local webserver using Harp
Production mode: build the app in production mode (minified and uglified)
This resets the project to its pristine state.
Continuous mode: for testing on Travis, Jenkins, etc
See version bumping
After having set up the project, the file structure would look like:
app/ -> Anything specific to the app goes here
app/assets/ -> Anything here is copied over to top-level directory as-is
app/common/ -> By convention anything that's shared across controllers
app/404.jade -> The "index" page
app/application.coffee -> The top-level ApplicationController
app/application.spec.coffee -> The spec for ApplicationController
app/main.coffee -> The main entry point, where module definition takes place
bower_compoennts/ -> Downloaded Bower components
etc/changelog.tpl -> The template for building CHANGELOG.md
etc/karma.conf.coffee -> The Karma configuration file
etc/*.sh -> Shell scripts to help with command-line operations
node_modules/ -> downloaded NPM modules
public/ -> The built code lives here
bower.json -> Bower dependency declaration
Gruntfile.coffee -> Gruntfile configuration
harp.json -> Harp configuration file
LICENSE -> Pretty self-explanatory
package.json -> NPM dependency declaration
README.md -> This document
Because ng-musical-brunch doesn't try to handle the assembly process itself, it supports anything found in the powerful ecosystem of Brunch! By default this repo supports:
- JavaScript/CoffeeScript
- CSS/Stylus
- HTML/Jade
But adding your favorite technologies are as easy as running npm install <brunch-plugin>
! Visit the plugin
directory to hunt for your gems!
Because developing in Angular.js requires many external libraries, package management should be automated using Bower. Follow these steps:
- Find the package you want by running
bower search <package-name>
bower install --save <package-name>
- That's it! :D
There is notably no index page but a 404 page. By default, modern webservers
should always return /404.html
without showing it as such (i.e. no
redirection) when a requested file isn't found. This plays nicely with
Angular.js' HTML5 mode which requires all requests to non-existing path to
return the application page.
Do not name any file index
to avoid the webserver serving sub-views unless
it's a .jade
file. This is because ng-musical-brunch uses the wonderful
jade-angularjs-brunch
plugin, which compresses all .jade
files as $templateCache
.
See Angular.js' HTML mode for more info.
There is no convention here. Scripts, styles, and markups are compiled to
public/
. Anything under assets/
is treated as assets and are transferred
as-is to the top-level directory under public/
.
process-env-brunch is used
to scan through all compiled files for $PROCESS_ENV_<name-here>
and take the
value from process.env[<name-here>]
as a replacement.
Open up app/404.jade
and update the following to your app's settings:
- APP_NAME: the name of the app that will be passed to AngularJS
- TWITTER_HANDLE: ditto
- CREATOR_HANDLE: the creator's Twitter handle
- CARD_SUMMARY: a summary for Twitter card
- CARD_TITLE: ditto
- CARD_DESCRIPTION: ditto
- CARD_IMAGE: the URL pointing to an image for the card
- CARD_URL: the URL pointing to any page
Aside from these variables, remember to update your AngularJS dependencies in
app/main.coffee
.