Is it possible to have a separate node_modules folder for devDependencies?

heroku, node-modules, node.js

Solution

I use a CI server to build, test, and deploy my files — so I was looking for a similar solution that would prevent me from needing to deploy extra dependencies and/or re-build on Heroku.

After all my tests run, I run npm prune --production, which removes `devDependencies` from `node_modules`, and then I push the result to Heroku.

No extra files go to the server, and deployment times are much faster since Heroku avoids having to build all the binaries usually found in Gulp/Grunt plugins.

Problem

I've got a Node app that I'm deploying to Heroku. Their docs say it's best practice to check in your `node_modules` directory (i.e. don't gitignore it), for faster deploys and for dev/prod parity. In my `package.json`, I've got loads of `devDependencies` (mostly Grunt plugins and all their deps) and a few regular production `dependencies` like Express. Heroku only needs the production deps. I'd rather not check in all my dev deps, because they come to about 50MB. Is there some way to have a separate folder for you dev deps, e.g. `node_modules_dev`? If this was possible, then I could just add `node_modules_dev` to my `.gitignore`, and check in the regular production `node_modules` directory as per Heroku's advice. Is there any way to do this? Or can you think of another way to do what I'm trying to do?

Original source