It's easy to run npm to install packages even on a system without internet access, or behind a corporate firewall. First note that npm has proxy settings, so if you have access to the correct credentials, try that first.
Let's assume you're developing a web application and you use Grunt for managing jshint and uglify tasks. This requires the npm package grunt-cli to be installed globally. All the other packages (i.e. jshint and uglify) can be run locally, so it's sufficient to copy node_modules with these packages from another installation.
Assuming you have another system with internet access/no proxy, and you have a working project with all the packages there:
npm pack
this should result in a grunt-cli-x.y.z.tgznode -v
and npm -v
.npm i -g grunt-cli-x.y.z.tgz
.grunt --version
.grunt
in the project dir.If you want to do a lot of offline installations, you might want to +1 this issue. It explains the process of doing several pack and install steps and how this could be simplified by extending the pack feature to also zip all the depencies of a package.