一、使用nvm(node version manager) 来管理node、npm版本
linux安装:
windows安装(直接下载安装包):
我是把nvm安装到D盘:D:\Program Files\nodejs\nvm
然后设置使用国内镜像下载nodejs和npm(国内比默认github的更慢):
nvm npm_mirror https://npmmirror.com/mirrors/npm/
nvm node_mirror https://npmmirror.com/mirrors/node/
然后查询有哪些node的版本(图中版本)
nvm list available
安装几个长期支持版本(如果下载不了,修改nvm目录权限为用户可修改)
nvm install 20.15.1
nvm install 14.21.3
或者nvm install 20 --lts(安装二零版本里长期支持的)
最后nvm use 20.15.1,使用一个版本(本地环境变量会自动使用这个版本的命令)
切换版本不会影响全局config设置,比如npm config get registry是一样的:
最后通过npm config set 设置公共设置:
cache = "D:\\Program Files\\nodejs\\node_cache"
prefix = "D:\\Program Files\\nodejs\\node_global"
registry = "https://registry.npmmirror.com"
webstorm使用的版本是C:\Program Files\nodejs这个由nvm管理的软链接的版本(所以会跟着nvm变)
注意
要让全局安装能够直接运行
把D:\Program Files\nodejs\node_global\bin加入系统环境变量path中
二、Linux使用PM2管理node脚本后台运行:
npm install pm2 -g
查看npm全局安装的脚本:npm list -g
对于想要后台运行的服务器脚本,使用 pm2 start appName启动即可
三、提供命令行运行的node脚本应该全局安装:
比如vue脚手架,create-react-app脚手架等等,node项目不会依赖它们的,只是当纯cmd命令行执行实现某个功能。
四、测试类的依赖可以安装为devDependencies,也可以支持npx运行
npx运行会把测试依赖文件放到一个缓存目录,运行完这个测试脚本后,删除缓存。(使用yarn命令会把安装过的依赖都缓存下来,下次不会从网络请求,加快加载速度)
五、每个项目的依赖应该直接安装到该项目目录下,不能使用-g安装
-g安装是安装在全局安装位置的node_modules里头
六、使用yarn
1、安装、配置
在新版本的node目录下有个命令:(nvm\v20.15.1\corepack)
直接运行:corepack enable 然后 yarn -v 会提示自动下载安装yarn二进制到默认安装目录。
yarn config set registry 'https://registry.npmmirror.com'
yarn config set global-folder "D:\Program Files\nodejs\yarn_global"
yarn config set cache-folder "D:\Program Files\nodejs\yarn_cache"
最终在配置里也可以看到:
2、npm和yarn的区别
- npm和yarn共用一个项目的
package.json配置文件,写法一样 - npm和yarn的锁定版本配置分别为:
package-lock.json 和 yarn.lock,写法是不一样的 - npm和yarn都是把依赖放到同一个node_modules里,但是目录结构有一点点不一致(直接导致只能二选一)
yarn的全局安装是 yarn global add package ,把npm的-g 参数换成 global 。
其他命令请看:yarnpkg.com/cli
3、npm项目转yarn
不考虑package-lock.json中锁定的小版本的话,
直接删除node_modules目录,然后执行yarn即可。
把package-lock.json转换为yarn.lock:
- yarn global add synp@1.9.13
- npx synp -s .\package-lock.json
- 生成
yarn.lock
七、使用软、硬链接的pnpm速度更快,占用空间更小
大概原理:把下载的包放到一个集中的库中,文件夹通过软链接,文件通过硬链接,其实真正的磁盘内容就一份,但软硬链接的文件夹、文件已经能够构建起node_modules的目录结构层级。
注意:pnpm的库,项目,文件,等,必须最好放到同一个磁盘中,因为硬链接的问题。
pnpm原理:
第一层直接依赖放到node_modules下级目录,其他间接依赖放到下级的同一级目录,利用了nodejs寻找依赖的原理:找下一级的时候找回到本级,直接把深层的目录结构平铺了。