There's a bit of a rough consensus on how to deploy, see some of these info sources:
- [The npm Debacle Was Partly Your Fault](http://www.letscodejavascript.com/v3/blog/2014/03/the_npm_debacle) - [Heroku Buildpack README](https://github.com/heroku/heroku-buildpack-nodejs/blob/master/README.md) Good even if you don't use heroku. - [10 steps to nodejs nirvana in production](http://qzaidi.github.io/2013/05/14/node-in-production/) - <http://addyosmani.com/blog/checking-in-front-end-dependencies/> - <http://www.futurealoof.com/posts/nodemodules-in-git.html> Basically, it comes down to bundling as much as possible during build, so you have no deploy-time dependencies on external resources, and you deploy the same thing, every time. There is some debate on compiled dependencies, building them means no need for a compiler on your deploy servers... but you need same build env as deploy. Pros and cons both ways. Where it gets heated is how do you transport your app? tarball works ok for some, in which case bundling your dependencies and doing an npm pack works OK, but you have to get the .npmignore file correct, as well. Also, lots of the above suggest commiting your build deps to git... I did that for fun for a loopback app that had an angular front-end, used bower, your basic full-stack node app. Over a million lines went into the git commit... craziness. And then there are all the command line shannanigans to keep it up to date, and modify your .gitignore. Doing this on a development tree doesn't make any sense to me. And, its unnecessary with git, you can use git commit-tree to keep an exact source copy of your development HEAD in a deploy branch, and THEN add the build products. This allows robust git push to PaaS deployment, but it also allows you to do an npm pack from completely git controlled state, to tag, to rollback, etc. All the good things you get with git, minus the pain of your dependencies in your dev tree. One problem with all this advice is it takes a pretty ad-hoc set of tools to do it all. Lots of steps are manual or script-it-yourself, or when scripted, are a bit creeky (bundle-deps doesn't bundle optional dependencies, for example). Anyhow, I've been working a tool to do the client-side build part of this, encapsulating what I think is the mostly-consensus best way to do these things, and some extras like git commit-tree. Its in pre-release, which means get it from https://github.com/strongloop/strong-build until its npm published. When you run it, you'll find the steps can be run one-by-one, or all together, are reasonably customizable, and log all the git, npm, and shell commands they execute to make it as transparent as possible about what its actually doing to your source. I'd love to have some feedback if you give it a whirl. Cheers, Sam -- Job board: http://jobs.nodejs.org/ New group rules: https://gist.github.com/othiym23/9886289#file-moderation-policy-md Old group rules: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/nodejs/CACmrRmQtVO%3DBw5oNmTdooHJcNmyExqV%2BcJp4uVTuE7ok%2ByCJFw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
