So many new things happening! Pretty stoked that I managed to get ZURB’s Foundation working on my Node.js application, my next step was to get the app deployed to Heroku. Until this point I’d only ever deployed a project to Heroku by following and mimicking the ‘Getting Started‘ tutorial. My seethisspot project was already very different to that example application so I had my work cut out for me. Here’s how I went about it…
1. Install bower and grunt as NPM dependencies, not just a devDependencies. My packages.json now looks like this…
"dependencies": { "express": "~4.11.0", "serve-favicon": "~2.2.0", "morgan": "~1.5.0", "cookie-parser": "~1.3.3", "body-parser": "~1.10.0", "debug": "~2.1.0", "jade": "~1.9.1", "bower": "~1.3.12", "grunt": "~0.4.5", "grunt-develop": "~0.4.0", "grunt-sass": "~0.17.0", "grunt-contrib-watch": "~0.6.1", "grunt-cli": "~0.1.13" }, "devDependencies": {}
2. Create a post install script to install all bower components. As you can see in this post, Foundation is installed as a bower component, so how to get this deployed on heroku? Simple really, your bower.json should have a dependecies section already
"dependencies": { "foundation": "zurb/bower-foundation#~5.5.1", "font-awesome": "~4.3.0" }
All that’s needed to install these components on whatever environment you deploy to is a simple script (mine’s call post_install.sh) in the root directory of your project
#!/bin/bash ./node_modules/bower/bin/bower install
Next, update the scripts section of your packages.npm to call this script using the ‘postinstall’ hook
"scripts": {
"start": "node ./bin/www",
"postinstall": "bash ./post_install.sh"
}
3. Create a grunt task that compiles your SASS into CSS once deployed. Add this in your gruntfile.js, the task must be called ‘heroku:production’ or ‘heroku:development’, although I haven’t played around with both of these yet to work out when & how it determines which to run
grunt.registerTask('heroku:production', [ 'sass' ]);
4. That should be it!Add a remote repository if you haven’t already, and push your project there!
> git push heroku master
And watch the magic unfold.