How to restore/reset npm configuration to default values? - node.js

I have played with npm set and npm config set for several times, now I want to reset to default values (a kind of factory reset).
Does npm provide a command to do that? Or should I delete all configuration files by hands then reinstall it?
I need to do it both on Linux CentOS and on Windows 8.

To reset user defaults
Run this in the command line (or git bash on windows):
echo "" > $(npm config get userconfig)
npm config edit
To reset global defaults
echo "" > $(npm config get globalconfig)
npm config --global edit
If you need sudo then run this instead:
sudo sh -c 'echo "" > $(npm config get globalconfig)'

For what it's worth, you can reset to default the value of a config entry with npm config delete <key> (or npm config rm <key>, but the usage of npm config rm is not mentioned in npm help config).
Example:
# set registry value
npm config set registry "https://skimdb.npmjs.com/registry"
# revert change back to default
npm config delete registry

If you run npm config edit, you'll get an editor showing the current configuration, and also a list of options and their default values.
But I don't think there's a 'reset' command.

If it's about just one property - let's say you want to temporarily change some default, for instance disable CA checking: you can do it with
npm config set ca ""
To come back to the defaults for that setting, simply
npm config delete ca
To verify, use npm config get ca.

npm config edit
Opens the config file in an editor. Use the --global flag to edit the global config.
now you can delete what ever the registry's you don't want and save file.
npm config list will display the list of available now.

Config is written to .npmrc files so just delete it. NPM looks up config in this order, setting in the next overwrites the previous one. So make sure there might be global config that usually is overwritten in per-project that becomes active after you have deleted the per-project config file. npm config list will allways list the active config.
npm builtin config file (/path/to/npm/npmrc)
global config file ($PREFIX/etc/npmrc)
per-user config file ($HOME/.npmrc)
per-project config file (/path/to/my/project/.npmrc)

Related

Global npm packages are install on different user directory

Recently I have created a new user on Windows 10 and removed the old user, after that when I try adding an global npm package it get installed on the previous user %appdata%/Roaming directory. I'm not able to use those global libs now.
Say for example
npm install -g gulp
installs the gulp module under
C:\Users<DELETED_USER>\AppData\Roaming\npm\gulp
and not found in the new user directory
C:\Users<NEW_USER>\AppData\Roaming\npm\gulp
Is there any npm config I have to touch to fix this issue?
When you run the following command:
npm config get prefix
it probably prints:
C:\Users\<DELETED_USER>\AppData\Roaming\npm\
If that's the case, i.e. it references the pathname to the <DELETED_USER>, then consider utilizing the npm config command to change the prefix value. E.g.
npm config set prefix "C:\Users\<NEW_USER>\AppData\Roaming\npm"
If you also run the following command:
run npm config ls -l
you may find other configuration properties (e.g. cache) whose values contain the <DELETED_USER> pathname in them too. For those also consider setting them as necessary using: npm config set <key> <value>

How to override npm project config?

I have a nodejs project and placed .npmrc file at root to override default npm config. I need to change the npm project config while building the project. Is there any option available to override the npm project config?
I tried to run this
npm config set registry "https://registry.npmjs.org/"
but it couldn't override the npm project config.
To override use --registry
sample format
npm --registry registryurl install packagename
I realize this is very old. However, I believe that the project specific .npmrc file overwrites your global .npmrc file, not the global overwriting the project as you seemed to mention in your question.
From my research, it appears that there is no project-specific argument for the npm config set command. It only works on the global file, I think...
I found success by just running all the npm config set <key> <value> commands I needed, going to my global .npmrc file and copying all the new key/value pairs, pasting those into my project specific .npmrc file, then going back and deleting those new key/values from my global .npmrc file.

How to specify registry while doing npm install with git remote url?

I want to be able to clone a git repository using a URL as specified here
<protocol>://[<user>[:<password>]#]<hostname>[:<port>][:][/]<path>[#<commit-ish>]
I am getting an error saying
npm ERR! 404 Registry returned 404 for GET on
https://registry.npmjs.org/XYZ
So I should also be able to specify the registry while doing since modules are supposed to be picked up from a internal repository.
Is it possible to specify registry while doing npm install with git remote url?
npm gets its config settings from the command line, environment variables, and npmrc files. You can try to specify registry in a npmrc file, and module in the command line.
To change registry, you can use command:
npm config set registry <registry url>
You can also change configs with the help of -- argument. Putting --foo bar on the command line sets the foo configuration parameter to "bar". So you can try something like that:
npm install http://git.repo.url --registry=https://your.registry.local/
Not the best way but If you are using mac or linux even in you can set alias for different registries.
##############NPM ALIASES######################
alias npm-default='npm config set registry https://registry.npmjs.org'
alias npm-sinopia='npm config set registry http://localhost:4873/'
Yes, you need to use:
npm config set registry <registry url>.
to make sure you install your package from the registry inside your company.
If you are doing npm -i -g, this is to install globally.
you need to do:
npm -g config set registry <registry url>

How to clear https proxy setting of NPM?

How can I clear the previous ssl proxy setting of NPM?
well, I search a lot, but all post I got is mainly about how to set proxy in corporate network.
I try to set proxy to nothing:
npm config set http-proxy
npm config set https-proxy
the first command pass yet the second one warn that:
npm WARN invalid config proxy=""
npm WARN invalid config Must be a full url with 'http://'
is the warning neglectable and I have successfully clear the proxy setting?
None of the above helped me, but this did:
npm config rm proxy
npm config rm https-proxy
Source: http://jonathanblog2000.blogspot.ch/2013/11/set-and-reset-proxy-for-git-and-npm.html
Try deleting them with:
npm config delete proxy
npm config delete https-proxy
npm config rm proxy
npm config rm https-proxy
unset HTTP_PROXY
unset HTTPS_PROXY
unset http_proxy
unset https_proxy
Damn finally this does the trick in Debian Jessie with privoxy (ad remover) installed, Thank you :-)
This was already answered but I think the --global config is not covered properly.
By running npm config rm proxy you remove proxy from user configuration. This can be easily verified by running: npm config list.
If there is proxy or https-proxy setting set in global config you have to use --global in the command to remove it.
So at the end this will clean-up proxies from both local and global configs:
npm config rm proxy
npm config rm https-proxy
npm config --global rm proxy
npm config --global rm https-proxy
In the latest version npm rm proxy does not work. Instead use npm rm http-proxy
npm config rm proxy
npm config rm https-proxy
By the default value npm is looking for packages from https://registry.npmjs.org. What you also need to do is override the registry and strict-ssl values.
npm config set registry "http://registry.npmjs.org"
npm config set strict-ssl false
If you go through the npm config documentation, it says:
proxy
Default: HTTP_PROXY or http_proxy environment variable, or
null
Type: url
As per this, to disable usage of proxy, proxy setting must be set to null. To set proxy value to null, one has to make sure that HTTP_PROXY or http_proxy environment variable is not set. So unset these environment variables and make sure that npm config ls -l shows proxy = null.
Also, it is important to note that:
Deleting http_proxy and https_proxy config settings alone will not
help if you still have HTTP_PROXY or http_proxy environment variable
is set to something and
Setting registry to use http:// and setting
strict-ssl to false will not help you if you are not behind a proxy
anyway and have HTTP_PROXY set to something.
It would have been better if npm had made the type of proxy setting to boolean to switch on/off the proxy usage. Or, they can introduce a new setting of sort use_proxy of type boolean.
I have used the below commands for removing any proxy set:
npm config rm proxy
npm config rm https-proxy
And it solved my problem :)
there is a simple way of deleting or removing the npm proxies.
npm config delete proxy
npm config delete https-proxy
I had the same problem once.
Follow these steps to delete proxy values:
1.To delete proxy in npm:
(-g is Important)
npm config delete proxy -g
npm config delete http-proxy -g
npm config delete https-proxy -g
Check the npm config file using:
npm config list
2.To delete system proxy:
set HTTP_PROXY=null
set HTTPS_PROXY=null
Now close the command line and open it to refresh the variables(proxy).
Nothing above worked for me. I had to edit the file ".npmrc" which will be under user home directory (ex: c:\users\abcuser) :
http_proxy=null
registry=https://registry.npmjs.org/
strict-ssl=true
proxy=null
This works
npm config delete http-proxy
npm config delete https-proxy
npm config rm proxy
npm config rm https-proxy
set HTTP_PROXY=null
set HTTPS_PROXY=null
Running npm version 2.10.1 in windows 7, I used:
npm config delete proxy
npm config delete https-proxy
Try This,
npm config delete http-proxy
npm config delete https-proxy
npm config rm proxy
npm config rm https-proxy
set HTTP_PROXY=null
set HTTPS_PROXY=null
The easiest way to remove any configuration at all from npm is to edit the npm config file. It only takes two(2) commands to do this; one to open npm config file for editing, the other to confirm your change.
type npm config list to view a list of all npm configurations that are active.
type npm config edit to open a text editor with npm configurations.
To remove the proxy line ( or simply comment it out ).
Save the config file and close it.
type npm config list to confirm that the proxy configuration has been removed.
C'est la vie!
I tried everything listed on this page, none worked, then I tried to the config edit. It worked instantly. (I use Windows 10)
npm config delete proxy -g
worked for me.
-g was important as initially it was set with that option.
You can check configurations set with :
npm config list
npm config rm proxy
npm config rm https-proxy
Worked for me
I think it's not http-proxy but proxy:
npm config set proxy="http://yourproxyhere"
Got exactly the same problem, I keep seeing my proxy configuration even after removing the npmrc file and deleting the keys.
I found out that npm were using windows env key http-proxy by default.
So go in Computer->Properties->Advanced system settings->Environement variables and check there is no http-proxy key configured.
In my case (Linux Mint 16 based on Ubuntu), I had to:
npm config delete https-proxy, and also
clear the https_proxy Bash environment parameter — oddly enough, although I cannot find this behavior documented anywhere, npm fallbacks to https_proxy:
$ http_proxy='' https_proxy='' npm config get https-proxy
null
$ http_proxy='' xxhttps_proxy='' npm config get https-proxy
https://1.2.3.4:8080
See the npm Settings in file C:\Users\myusers.npmrc file. Sometime the npm proxy config settings does not apply. so its worth checking in there.
npm config delete http-proxy
npm config delete https-proxy
npm config delete proxy -g
npm config delete http-proxy -g
then
npm config get proxy
null
also
npm i -g bower to update
npm had a bug on the proxy
If you want to switch between proxy for company network and remove proxy for home/personal network you can use --no-proxy
Sample usage:
npm install --save-dev "#angular/animations#8.2.14" --no-proxy
execute npm config list
it will list down all proxy values.. in my case proxy value was fetched form global npmrc file, removed it and was able to complete npm install on my windows machine
Well, I'm gonna leave this here because I was having a big trouble with NPM.
I was trying to change a proxy setting using npm config set proxy "http://.../" and then running npm config get proxy. It was ALWAYS returning a wrong value, different from the one that I'd set.
I found out that I had a .npmrc COMMITED on the project I was trying to run npm install and that this file was overriding my own config.
So it was cleaning the proxy value, but I needed to also change the .npmrc inside the folder's project.
After that, everything worked fine.
I've used
npm config set proxy null
npm config set https-proxy null
and it worked for me.
Best regards
this works for me fime
proxy=http://<username>:<pass>#proxyhost:<port>
https-proxy=http://<uname>:<pass>#proxyhost:<port>
sample in my instance username:uname and password:pword
npm config set proxy=http://uname:pword#192.168.5.8:8080
npm config set https-proxy=http://uname:pword#192.168.5.8:8080
I was struggling with this for ages. What I finally did was go into the .npmrc file (which can be found in the user's directory followed by the user's name, ie. C:\Users\erikj/.npmrc), opened it with a text editor, manually removed any proxy settings and changed the http:// setting to https://. In this case, it is a matter of experimenting whether http or https will work for you. In my case, https worked. Go figure.
In my case, (windows OS), after put all those commands listed, npm kept taking
the proxy in the setting of windows registry
\ HKEY_CURRENT_USER \ Environment
just remove the proxy settings there, after that, I restarted the pc and then "npm install" worked for me
Example
Http Module is deprecated and it is replaced with HttpClient.
Change your imports to import { HttpClientModule } from '#angular/common/http';

How can I change the cache path for npm (or completely disable the cache) on Windows?

I've installed Node.js on my Windows 7 x64 development machine, the manual way:
mkdir C:\Devel\nodejs
cd C:\Devel\nodejs
set NODE_PATH=%CD%
setx /M PATH "%PATH%;%NODE_PATH%"
setx /M NODE_PATH "%NODE_PATH%\node_modules"
I've placed the main node x64 binary along with npm package manager in C:\Devel\nodejs. Works like a charm and I can update the main binary without dealing with the installer.
The only problem I can't solve is moving the cache folder. When I install a local package:
npm install express
... cache is placed under %APP_DATA%\npm-cache folder. I'd like to change it to:
C:\Devel\nodejs\npm-cache
How can I change the npm cache folder, or disable it completely?
You can change npm cache folder using the npm command line. (see https://docs.npmjs.com/cli/v6/using-npm/config#cache)
So you might want to try this command :
> npm config set cache C:\Devel\nodejs\npm-cache --global
Then, run npm --global cache verify after running this command.
You can also set an environment variable with export npm_config_cache=/path/to/cache (Unix) or set npm_config_cache=C:\path\to\cache (Win) as an alternative to npm config set (this is true for all config options in npm).
For anyone using docker you can add the env var at runtime with:
docker run -e npm_config_cache=/path/to/cache mydockerimage:tag
You can also do following:
For having cache path as you wish, for a single package while installing it:
npm install packageName --cache path/to/some/folder
For having cache path as you wish, for all the packages in package.json:
Just be in the directory where package.json is as usual and do
npm install --cache path/to/some/folder
You may not find this in npm documentation but i have tried it with npm 6 and it works.
Looks like it works since npm 5 [Refer: How to specify cache folder in npm5 on install command?
In Windows you can simply cd to the desired cache folder and do npm set cache --global
Solution
Paste the following code into npmrc file.
Location of npmrc file: C:\Program Files\nodejs\node_modules\npm\npmrc
prefix=D:\nodejs\npm
cache=D:\nodejs\npm-cache
Notes:
There is no '.' in front of npmrc
Diagrams
NPMRC file folder look like this
NPMRC Content look like this
Hope it helps. Cheers
In addition, I found that running an update command works also - for example:
npm update npm
Lastly, one can check their npm-cache directory to see if is being filled or not.

Resources