背景说明
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,目前前端框架均使用Node作为基础运行时环境,由于个人倾向于解压安装,这里坐下记录供参考。
解决方案
构建下载
打开浏览器访问网址:http://nodejs.cn/download/ https://nodejs.org/zh-cn/download/
Windows 二进制文件 (.zip)->64位
构建解压
解压node-v14.16.0-win-x64.zip
至目录D:\develop\lang\node\node-v14.16.0-win-x64
环境变量
键盘上按下左下脚Windows[四个方格]
输入环境变量
出现控制面板[编辑系统环境变量]
此时弹出一个窗口选择右下脚环境变量
找到系统环境变量
新建如下环境变量
NODE_HOME D:\develop\lang\node\node-v14.16.0-win-x64
追加Path
环境变量
%NODE_HOME%
%NODE_HOME%\node_global
目录管理
C:\Users\86183>npm root -g
C:\Users\86183\AppData\Roaming\npm\node_modules
npm作为一个NodeJS的模块管理,要先配置npm的全局模块的存放路径以及cache的路径
不进行目录环境变量配置,在使用命令安装node.js全局模块,例如npm install -g express时,会默认安装到C盘的路径C:\Users\用户名\AppData\Roaming\npm中,所以在这边配置全局安装模块以及缓存目录的环境变量来减少C盘的压力
目录创建
在根目录D:\develop\lang\node\node-v14.16.0-win-x64创建目录node_cache
和node_global
node_global
作为 npm 的全局安装模块路径
node_cache
作为 npm 的全局缓存路径
命令设置
执行如下命令进行设置全局安装模块路径
和全局缓存路径
C:\Users\86183>npm config set prefix "D:\develop\lang\node\node-v14.16.0-win-x64\node_global"
C:\Users\86183>npm config set cache "D:\develop\lang\node\node-v14.16.0-win-x64\node_cache"
会在当前用户目录下生产.npmrc
文件
$ pwd
/c/Users/86183
$ ls -al |grep .npmrc
-rw-r--r-- 1 86183 197609 124 4月 5 21:09 .npmrc
文件内容如下
prefix=D:\develop\lang\node\node-v14.16.0-win-x64\node_global
cache=D:\develop\lang\node\node-v14.16.0-win-x64\node_cache
用户变量
在D:\develop\lang\node\node-v14.16.0-win-x64\node_global
目录下创建目录node_modules
配置系统环境变量
NODE_PATH %NODE_HOME%\node_global\node_modules
坚持是否配置成功
C:\Users\86183>npm root -g
D:\develop\lang\node\node-v14.16.0-win-x64\node_global\node_modules
镜像设置
由于国内网络问题,使用官方源进行安装模块特别慢,这里推荐使用淘宝镜像。
方案一
设置淘宝仓库
C:\Users\86183>npm config set registry https://registry.npm.taobao.org --global
C:\Users\86183>npm config set disturl https://npm.taobao.org/dist --global
以后下载模块的时候,将npm替换成cnpm即可从淘宝镜像中下载模块
C:\Users\86183>npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm有时会有bug,不推荐,建议使用方案二
查看镜像设置
C:\Users\86183>npm get registry
恢复官方仓库
npm config set registry https://registry.npmjs.org/
方案二
使用推荐的切换镜像工具nrm
C:\Users\86183>npm install nrm -g
C:\Users\86183>nrm ls
internal/validators.js:124
throw new ERR_INVALID_ARG_TYPE(name, 'string', value);
^
[TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
at validateString (internal/validators.js:124:11)
at Object.join (path.js:375:7)
at Object.<anonymous> (D:\develop\lang\node\node-v14.16.0-win-x64\node_global\node_modules\nrm\cli.js:17:20)
at Module._compile (internal/modules/cjs/loader.js:1063:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
at Module.load (internal/modules/cjs/loader.js:928:32)
at Function.Module._load (internal/modules/cjs/loader.js:769:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47
] {
code: 'ERR_INVALID_ARG_TYPE'
}
在目录D:\develop\lang\node\node-v14.16.0-win-x64\node_global\node_modules\nrm
下找到cli.js
打开并找到下面这句话:
const NRMRC = path.join(process.env.HOME, '.nrmrc');
这段话在17行,把他替换成如下:
const NRMRC = path.join(process.env[(process.platform == 'win32') ? 'USERPROFILE' : 'HOME'], '.nrmrc');
保存文件,打开控制台输入命令
C:\Users\86183>nrm ls
npm -------- https://registry.npmjs.org/
yarn ------- https://registry.yarnpkg.com/
cnpm ------- http://r.cnpmjs.org/
* taobao ----- https://registry.npm.taobao.org/
nj --------- https://registry.nodejitsu.com/
npmMirror -- https://skimdb.npmjs.com/registry/
edunpm ----- http://registry.enpmjs.org/
C:\Users\8618
通过nrm use taobao
来指定要使用的镜像源:
C:\Users\86183>nrm use taobao
Registry has been set to: https://registry.npm.taobao.org/
C:\Users\86183>
通过nrm test npm
来测试速度
C:\Users\86183>nrm test npm
npm ---- 3430ms
C:\Users\86183>
全局安装
C:\Users\86183>npm install -g webpack
-g表示是全局安装
node_global\node_modules
路径下多了webpack
文件夹,说明配置成功。
配置查看
$ npm config list
; cli configs
metrics-registry = "https://registry.npm.taobao.org/"
scope = ""
user-agent = "npm/6.14.11 node/v14.16.0 win32 x64"
; userconfig C:\Users\86183\.npmrc
cache = "D:\\develop\\lang\\node\\node-v14.16.0-win-x64\\node_cache"
home = "https://npm.taobao.org"
prefix = "D:\\develop\\lang\\node\\node-v14.16.0-win-x64\\node_global"
registry = "https://registry.npm.taobao.org/"
; globalconfig D:\develop\lang\node\node-v14.16.0-win-x64\node_global\etc\npmrc
disturl = "https://npm.taobao.org/dist"
registry = "https://registry.npm.taobao.org/"
; node bin location = D:\develop\lang\node\node-v14.16.0-win-x64\node.exe
; cwd = C:\nodedemo
; HOME = C:\Users\86183
; "npm config ls -l" to show all defaults.
npm config ls -l
也可以列出所有配置