Good luck with all that. I think the self contained route is probably better since it fits with how things work with Node and its modules. Something like install the packages in a clean cache using npm 2 so that they aren't maximally flat. Then tgz up the package folder. It'll have all deps at their correct versions in their node_modules folder and be actual package code code instead of recreations from source. This is also similar to https://docs.npmjs.com/files/package.json#bundleddependencies.