I have a problem on npm installation
I have created a project say project A
cd ~/projectA
npm install sails
but sails command is not found after installation.
I know that it is successfully install in ~/projectA/node_modules
directory.
but the executable cannot be sourced. And i know it is installed ~/projectA/node_modules/.bin
How can I source the .bin automatically whenever I enter into this projectA folder?
Did I did something wrong?
To use on the command line like
sails generate foo
you will need to install the npm module globally.You could also use the path to the bin in the command if you don't want to install globally:
The official instructions for sails (https://github.com/balderdashy/sails) advises
This installs globally and adds to a directory like
/usr/local/bin
that should be in your$PATH
.But to answer the general question regarding the location of the binaries if you install locally, they should be placed in
./node_modules/.bin
directory (so run./node_modules/.bin/sails ...
)If you don't like to mess up with your PATH for running a npm script that isn't global -- e.g. you are the only one to use it --, I would personally recommend the use of an sh "alias".
npm install (locally) your beloved package (json-diff here, for instance)
alias it (save it in your ~/.xxxxrc file):
Then, for diffing 2 json's:
In my
~/.bashrc
, I have the following:I can then run executable
foo
in the.bin
directory as:You should use the
npm bin
command to get an absolute path to your current node bin directory.For example:
This avoids the problem of relative paths, especially if you're going to be using this in a build system that will invoke the command in subdirectories.
I can give you an inelegant solution, which is working for me. I just exported my path in my .bashrc file.
Edit: It's been a while, but I have changed my strategy to use npm scripts instead. In the above case, setup package.json as follows:
Which you can then run with
or with arguments