You can use
npm install -g to install a package "globally." This is typically done to install an executable that you can add to your path to run. For example:
npm install -g gulp-cli
If you update your path, you can call gulp directly.
On many OSes,
npm install -g will attempt to write to a directory that your user may not be able to write to such as
/usr/bin. You should not use
sudo npm install in this case since there is a possible security risk of running arbitrary scripts with
sudo and the root user may create directories in your home that you cannot write to which makes future installations more difficult.
You can tell
npm where to install global modules to via your configuration file,
~/.npmrc. This is called the prefix
which you can view with
This will use the prefix whenever you run
npm install -g. You can also use
npm install --prefix ~/.npmglobal-modules to set the prefix when you install. If the prefix is the same as your configuration, you don't need to use -g.
In order to use the globally installed module, it needs to be on your path:
Now when you run
npm install -g gulp-cli you will be able to use gulp.
Note: When you
npm install(without -g) the prefix will be the directory with
package.jsonor the current directory if none is found in the hierarchy. This also creates a directory
node_modules/.binthat has the executables. If you want to use an executable that is specific to a project, it's not necessary to use
npm install -g. You can use the one in
With all that being said, I highly recommend you keep learning!