Is `prefix ~/.npm-packages` the same as `prefix=${HOME}/.npm-packages` - node.js

I am not able to run npm install npm#latest -g without running into permissions errors and being forced to use sudo npm install npm#latest -g. I had been able to run this without using sudo, however, I followed an answer on StackOverflow that suggested using sudo and this seemed to mess things up. (I was never able to upgrade npm.)
Trying to rectify this sudo issue, I found a potential solution follow here, "Install npm packages globally without sudo on macOS and Linux"
https://github.com/sindresorhus/guides/blob/master/npm-global-without-sudo.md
Step 2 says: "2. Indicate to npm where to store globally installed packages. In your ~/.npmrc file add: prefix=${HOME}/.npm-packages"
When I open the ~/.npmrc file, I see prefix=~/.npm-packages. Is prefix ~/.npm-packages the same as prefix=${HOME}/.npm-packages, or do I need to add ${HOME}?
I am running Mac 10.11.6. My npm is at v 5.6.0.

In many shells "~" is an alias for ${HOME}. Using ${HOME} gets the shell to insert the Home environment variable and is more universal then "~".

Related

I cannot install nodemon by using npm command

enter image description here
When i tried to install nodemon package using npm i got errors as shown in the picture. I also tried using sudo but nothing changed.
you can use this command.
sudo npm install nodemon -g
sudo makes sure that the command would run as a superuser that allows users to run programs with the security privileges of another user (normally the superuser, or root).
-g instructs npm to install the node package globally onto the system.

Npm & Node installation

So i've been trying to download and install node.js and npm to should allow me to run expo on my computer. More especifically the cmd "npm install expo-cli --global". When i run it i get the error(s) below. Now, i'm a novice in terminal and navigation of the computer in general, so i'm having troubles underestanding the errors, or what the solution might be. Any help is appreciated
To install a package globally you have to install with root permissions (similar to "Run As Administrator" on windows). You can run:
sudo npm install expo-cli --global
And enter your password at the prompt (keep in mind that even though it won't show up, it's still there).
An alternative solution (if you're not administrator or don't want to use sudo) is giving npm a prefix and adding that to your path. There's a nice guide for that on GitHub: https://github.com/sindresorhus/guides/blob/master/npm-global-without-sudo.md

Trying to install less on Ubuntu 16.04

As I wrote up there I'm trying to install less on Ubuntu. I'm using Xampp as localhost, but from what I've read seems that it doesn't matter. However, after I've installed node.js from nodejs.org, I went to lesscss.org and I followed the instructions.
When I type this command on the terminal
lessc styles.less
I get the following error
lessc: ENOENT: no such file or directory, open '/path/to/cwd/styles.less'
where the path corresponds to my actual path but there isn't any styles.less file of course. I also tried to create a blank one and retry but nothing. What should I do ?
You probably need to install less using npm install -g less. lessc should be available as /usr/bin/lessc.
Also, make sure /usr/bin is on your path by running echo $PATH.
EDIT
I just noticed you were able to run it. You need to create some .less files and run lessc <FILENAME>. The output will be printed out to the screen but you can specify a destination file as well, lessc <SOURCE> <DESTINATION>. See command line usage I recommend using a build tool such as gulp or webpack.
STEPS TO INSTALL LESS IN UBUNTU 16.04
Open Terminal.
Check availability of npm. Write "npm -v", here -v means version.
If there is npm by default in your system then it will show you the version of that npm. If there is no npm installed in your system then it will ask you to install the npm.
To install npm in your ubuntu. Write "sudo apt install npm".
Now you have to install the less library. So, to install less. Write 2 commands accordingly:-
(i) sudo apt install less
(ii) sudo apt install node-less

Fix for npm global install on Ubuntu

I have a nodejs package that requires a global install. This one fails in a way that leads me to believe there might be a configuration problem in the the Ubuntu package npm. This happens every-time I setup an Ubuntu 14.04 machine.
sudo apt-get install npm
npm install -g lineman
The npm -g command will throw some access error naming the local lib and bin directories. Unlike some global installs, it is not an option to cheat and run the second command under sudo. So, the only fix I have found that will work is something like this:
sudo chgrp -R $(whoami) /usr/local/bin /usr/local/lib
sudo chmod -R g+rwx /usr/local/bin /usr/local/lib
The fix is fine for me, I'm the only user. But is this really the best way to do it? I don't want to document my fix for anyone else that might use it in an environment where this will not work or cause trouble.
Also, should I file a bug report with someone who packages npm for Ubuntu?
Instead of npm install -g lineman, you should run sudo npm install -g lineman. npm requires permission as well.
Also check this stackoverlfow link.

Cannot run ionic. receives "No command 'ionic' found"

I want to start using the ionic framework, but unfortunately I'm already failing on the first step.
I am running Ubuntu 13.04 and I have node v0.10.25 installed.
I've installed ionic, at described in their docs:
sudo npm install -g cordova
sudo npm install -g ionic
The installation went well, no errors or warnings, but after the installation I type
ionic
and I get the error:
No command 'ionic' found, did you mean:
Command 'ionice' from package 'util-linux' (main)
Command 'sonic' from package 'sonic' (universe)
ionic: command not found
I'm pretty new to ubuntu so I might have something not configured correctly, but I can't find what.
Thanks
for some of you, the two answer above might not work. here's a more general solution for situation where you see "XX" command not found
first check your npm root and npm root -g
the result for the npm root -g should be something like "/usr/local".
if it's not, then you found your problem.
change it by:
npm config set prefix /usr/local
then npm root -g should give you something like /usr/local/lib/node_modules
.
Then go ahead re-install everything with -g
you will be good to go!
Well, I found it finally.
The ionic installation was at /home/guy/npm/bin/ionic, not at /usr/bin/ionic at it should be.
Solved it with:
sudo ln -s /home/guy/npm/bin/ionic /usr/bin/ionic
I solved the problem by cd to my root. Then install ionic as root admin.
$ sudo npm install -g cordova ionic
then run
$ ionic
to see if it's working.
Someone might run into this after trying to change the global library directory of npm to a folder they have permissions to write to in order to be able to install global libs without root permissions.
In that case you might have forgotten to add the new folder to you PATH environment variable.
The whole process of fixing Permissions can be found here.
in case that source disappears here is a copy of the steps:
There are times when you do not want to change ownership of the
default directory that npm uses (i.e. /usr) as this could cause some
problems, for example if you are sharing the system with other users.
Instead, you can configure npm to use a different directory
altogether. In our case, this will be a hidden directory in our home folder.
Make a directory for global installations:
mkdir ~/.npm-global
Configure npm to use the new directory path:
npm config set prefix '~/.npm-global'
Open or create a ~/.profile file and add this line:
export PATH=~/.npm-global/bin:$PATH
Back on the command line, update your system variables:
source ~/.profile
Test: Download a package globally without using sudo.
npm install -g jshint
Instead of steps 2-4 you can also use the corresponding ENV variable (e.g. if you don't want to modify
~/.profile):
NPM_CONFIG_PREFIX=~/.npm-global npm install -g jshint
if you just follow these steps and reinstall all the Global libs there is a good chance that it will start working for you anyways...
Just remember that if you do this, you will save your global libs into the folder created in step 1 instead of the default location in /usr/local or just /usr (depending on your OS flavor i guess?)
First Solution
I recently ran into this issue and the only solution that worked for me was to uninstall both ionic and cordova.
npm uninstall -g cordova
npm uninstall -g ionic
Then just reinstall
npm install -g cordova
npm install -g ionic
Second Solution
I ran into this issue again! This time check your environmental variables.
Run npm bin -g and check if the path returned is in your environmental variables. For me, it prompted that it was not found in the terminal output. I added that path to the environmental variables and restarted the terminal. From there everything started to work again. (source)
I had the same problem with “bash: ionic: command not found”,
then I added:
%USERPROFILE%\AppData\Roaming\npm
to my environment variable’s path, then I reinstalled ionic and cordova and it start working.
For Mac users
1. install the ionic
npm i -g #ionic/cli
2. check npm path
npm root -g
3. copy full path of ionic
Ex. /usr/local/Cellar/node/15.2.1/lib/node_modules/#ionic/cli/bin
4. open this file as administrator "/etc/paths" with nano or whatever editor
Ex. sudo nano /etc/paths
5. Add ionic bin file full path to file ends. And save file.
That's it.
Run npm root -g, copy the result path and add it to the paths file:
sudo nano /etc/paths
Restart your console and it will work.
this worked for me. try adding below to the ~/.bash_profile for mac OSX el capitan users:
NPM_PACKAGES="${HOME}/.npm-packages"
NODE_PATH="$NPM_PACKAGES/lib/node_modules:$NODE_PATH"
PATH="$NPM_PACKAGES/bin:$PATH"
# Unset manpath so we can inherit from /etc/manpath via the `manpath`
# command
unset MANPATH # delete if you already modified MANPATH elsewhere in your config
MANPATH="$NPM_PACKAGES/share/man:$(manpath)"
then run source ~/.bash_profile to reload the profile in terminal.
additional info: node v4.3.1
In my case, I have just uninstalled ionic and then reinstalled it. And it is working fine now.
I also faced same problem but i solved i used following commands on terminal it worked
sudo npm uninstall ionic
then i used
sudo npm install -g cordova ionic#latest
and it worked fine it automatically installs best stabel version of cordova and latest stable version of ionic . for me it installed ionic 3.7.0
and cordova 7.0.1
you can change temporary :
npm config set prefix C:\Users[username]\AppData\Roaming\npm\node_modules2
change the Path in Environment Variables set C:\Users[username]\AppData\Roaming\npm\node_modules2
Run your command to install your package .
open file explorer copy the link C:\Users[username]\AppData\Roaming\npm\node_modules
ok file yourpackage.CMD created another folder Created "node_modules2" in node_modules and contain your package folder.
copy your package file CMD to parent folder "npm"
copy your package folder to parent folder "node_modules"
now run npm config set prefix C:\Users[username]\AppData\Roaming\npm
change the Path in Environment Variables set C:\Users[username]\AppData\Roaming\npm
now package working correctly with Command line
=> this method working with me When npm block in installation Package for IONIC installation and ReactNative and another package npm.
The package name has changed from ionic to #ionic/cli!
To update, run: npm uninstall -g ionic
Then run: npm i -g #ionic/cli

Resources