npm >= v3.x bundled with node >= v5 has broken this project.
preinstall
script is since then called after requests to npm registry are made.
This makes it impossible foroffline-npm
to start as a registry server.
See BROKEN.md for detailed logs.
Hassle-free npm pack
including all dependencies for offline installation with npm install
Add offline-npm
to your project to serve a npm compatible tgz file wich contains all dependencies for offline installation with npm install
.
Additionally you can use offline-npm -n
to install packages from your local npm cache directory (Could be useful e.g. on travelling).
Even installs using git:
or file:
(requires node>=0.11) are considered.
npm install -g offline-npm
-
Open terminal and go to your project you want to prepare for offline use. This folder needs to contain a
package.json
file. -
Prepare your project for offline use
offline-npm --add
This changes the
package.json
file and adds aoffline
folder which will contain all your dependencies. -
Pack your project
npm pack
Now the local cache is changed and all your projects dependencies will be downloaded into
offline/cache
and packed into the npm tgz file.Note: Take care not to add a global
*.tgz
into your.npmignore
file!Note: An existing
npm-shrinkwrap.json
file will get overwritten in this step to provide install without the--registry
switch. A backup is stored in the./offline
folder. -
Transfer the resulting
<name>-<version>.tgz
from the pack command onto a machine with no connectivity to the required registry. Execute this line from a terminal.Now install the package with:
npm install [-g] <name>-<version>.tgz
Find here a step-by-step tutorial using a provided sample project.
If you want to use your local npm cache to install packages from use the option
offline-npm -n [-d]
-d
shows you some server logs on the console.
Then install packages from the local npm cache with:
npm --registry http://localhost:4873 [-f] install <packagename>
Use the
-f
switch to force installing packages. This might be required ifnpm
stops stating "shasum" errors.
-
Never add
*.tgz
into your.npmignore
file. Otherwise allpackage.tgz
files for the offline installation will be missing.If you want to exclude previously packed versions of the package you're working with use
<name>-*.tgz
instead. -
The script needs access to
npm
. It is assumed thatnpm
is installed alongside withnode
. If you experience problems with correcty resolvingnpm
, add to your$HOME/.profile
or$HOME/.bashrc
export NODE_PATH=<path_to_node_modules>/node_modules:$NODE_PATH
where
<path_to_node_modules>
is the path to thenode_modules
dir which contains npm. -
If installation hangs try installing in verbose mode
`npm install <name-version>.tgz --verbose`
If you see that some
.lock
in your files block you from progress, consider deleting them withnpm cache clean <pkg>[@<version>]
Copyright (c) 2014 commenthol
Software is released under MIT.