Home

Awesome

THIS REPOSITORY IS NO LONGER MAINTAINED.

node-express-grunt-boilerplate

A boilerplate to start a new express project based on CoffeeScript, Grunt build system, Jade Template Engine and bootstrap.

Any suggestions or pull-requests are welcomed!

Usage

Preparing

first, fork this repository!
git clone git@github.com:{YOUR USERID}/node-express-grunt-boilerplate.git
cd node-express-grunt-boilerplate
npm install
cp config.sample.coffee config.coffee (Modify port number if need)

Development

grunt

Production

Starting Server

grunt production

Folder Tree

assets
    vendor
    images
    coffeescripts
    less
routes
views

How to keep updated from this repository

You will fork this repository, and do works on your fork. Meanwhile, we'll do our own work on this repository and sometimes you want to merge our changes into your repository. You can do just following steps:

# at your repository folder,
git remote add boilerplate git@github.com:eunjae-lee/node-express-grunt-boilerplate.git
git fetch boilerplate
git branch boilerplate boilerplate/master

The steps above will create a branch named "boilerplate" pointing boilerplate repository. When we update some stuff, you can checkout boilerplate branch and pull the stuff, and merge into your develop, master, etc like following:

# ex> current branch : master
git checkout boilerplate
git pull
git checkout master
git merge boilerplate

More Guide

Basically files under "assets" folder are copied, minified or converted to "public" folder, and node app's static path is set to "public".

Example

/assets
    /vendor
        /bootstrap-3.0.0
            /css
            	/bootstrap.css
                /bootstrap.min.css
            /js
                /bootstrap.js
                /bootstrap.min.js
    /images
        /bg.png
    /javascripts
        /login
            /login.js
    /coffeescripts
        /login
            /helper.coffee
    /stylesheets
        /login
            /login.css
    /less
        /login
            /test.less

will be converted to

/public
    /vendor
        /bootstrap-3.0.0
            /css
            	/bootstrap.css (just copied)
                /bootstrap.min.css (just copied)
            /js
                /bootstrap.js (just copied)
                /bootstrap.min.js (just copied)
    /images
        /bg.png (just copied)
    /javascripts
        /login
            /login.js (just copied)
            /login.min.js (uglified from login.js)
            /helper.js (converted from helper.coffee)
            /helper.min.js (converted from helper.coffee)
    /stylesheets
        /login
            /login.css (just copied)
            /login.min.css (minified from login.css)
            /test.css (converted from test.less)
            /test.min.css (converted from test.less)

And now you can access those static files like following

http://hostname:port/assets/bootstrap-3.0.0/css/bootstrap.css
http://hostname:port/images/bg.png
http://hostname:port/javascripts/login/login.min.js
http://hostname:port/stylesheets/login/test.min.css

So basically

Tips & Tricks

"env" variable at render options

When rendering views, you have to set options obj like

res.render "index", {
	title: "Index Page"
	username: "Eunjae Lee"
}

However, this boilerplate uses a library render-options-injector to automatically inject app's environment setting(development, production, ...). So you just can use "env" variable at view templates like following code.

# index.jade
if (env == "development")
    script(src='/javascripts/index.js')
else
    script(src='/javascripts/index.min.js')

And this is how the boilerplate made it work.

# app.coffee
injector = require 'render-options-injector'
...
...
injector.inject(app, {'env': app.settings.env, 'or': 'other values'})
...
http.createServer(...

Error: SSL Error: CERT_UNTRUSTED

npm config set strict-ssl false

Check out this link.

License

MIT

Contributors

Bitdeli Badge