Nodejs 升级怎么保留全局安装的包

2021-07-08 13:11:32 +08:00
 lc1450

rt, 今天用 fs/promises 报错,发现是 nodejs 版本低了。于是下载最新 lts 版本 zip,打算直接解压覆盖,仔细一看发现 npm 全局安装的包生成的命令都在 NODEJS_HOME/node_modules/npm 目录里面, 就保留了 node_modules 只覆盖了 node.exe npx 等文件。

nodejs 是升级成功了 ,但 npm 就不干了 npm WARN npm npm does not support Node.js v14.17.3 最后清空目录,解压进去好了,全局命令以后缺了再装。

想问问各位大佬,你们 nodejs 是怎么升级的,有没有办法保留这些全局包(命令)

还有 nodejs 在服务器上部署时怎么限制 npm 配置路径,服务器是多人共享 root 的,怕影响到其他人,所以全局包(例如 pm2)要装到项目目录里面,看文档.npmrc 的搜索路径,/root/.npmrc 是肯定会被读到的,不知道有没有什么好办法解决

2881 次点击
所在节点    Node.js
11 条回复
zzk1989
2021-07-08 13:44:55 +08:00
npx 可以指定 node 版本,不影响全局
$ npx -p node@0.12.8 node -v

如果你有一系列东西,可以单独封装起来,提供一个"bin"命令就可以了
比如我就封装了一个 vite vue2 的打包环境,全局安装一次就可以在其他项目里面使用了
coffeedeveloper
2021-07-08 13:45:05 +08:00
用 nvm https://github.com/nvm-sh/nvm,然后安装的使用 --reinstall-packages-from 参数
noe132
2021-07-08 13:52:38 +08:00
不使用全局包 / 使用 docker 部署
lc1450
2021-07-08 14:10:20 +08:00
@zzk1989 @coffeedeveloper 好的,谢谢 有空试试

@noe132 是个好办法, 谢谢了
libook
2021-07-08 16:24:09 +08:00
npm 自己其实也是被当做一个包放在全局的 node_modules 下的,你可以把新版的 npm 覆盖过去。

另外一直在 MacOS 和 Linux 下用 nvm:
nvm install 新版本号 --reinstall-packages-from=旧版本号
可以做到连着全局包一起迁移过去。
几年前尝试过在 Windows 上用 nvm 无果,nvm 本身实际是个 Shell 脚本,原版不能在 Windows 上用,有个 nvm-windows,不知道现在是否好用。
dfkjgklfdjg
2021-07-08 16:35:25 +08:00
使用 NVM 来管理,然后指定一下全局安装目录就好了,我是直接指定到一个外部目录,然后不管怎么切换版本都全局依赖都不会丢。
dengshen
2021-07-08 16:41:55 +08:00
Mac ?用 n 来管理版本
Jirajine
2021-07-08 16:45:19 +08:00
可以看看 volta,像 rustup 一样管理 node 环境。
threeEggs123
2021-07-08 18:17:01 +08:00
借个楼问一下,node 12.x 版本,create-react-app,npm run start 后,cpu 直接蹦到一百,依赖就是那些 ts,antd,谷歌都没有找到解决方案,怎么定位问题呢。cpu 高,内存没多少。
zhaihaoxyz1
2021-07-09 18:13:31 +08:00
可以使用容器管理
magicdawn
2021-08-04 22:34:13 +08:00
几年前看到了知乎安利 nvs, 就是看中了每次升级不用重新安装所有 global modules

https://zhuanlan.zhihu.com/p/63403762

npm config set prefix ~/.npm-global

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/788281

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX