V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lc1450
V2EX  ›  Node.js

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

  •  
  •   lc1450 · 322 天前 · 1763 次点击
    这是一个创建于 322 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 是肯定会被读到的,不知道有没有什么好办法解决

    11 条回复    2021-08-04 22:34:13 +08:00
    zzk1989
        1
    zzk1989  
       322 天前
    npx 可以指定 node 版本,不影响全局
    $ npx -p [email protected] node -v

    如果你有一系列东西,可以单独封装起来,提供一个"bin"命令就可以了
    比如我就封装了一个 vite vue2 的打包环境,全局安装一次就可以在其他项目里面使用了
    coffeedeveloper
        2
    coffeedeveloper  
       322 天前   ❤️ 1
    用 nvm https://github.com/nvm-sh/nvm,然后安装的使用 --reinstall-packages-from 参数
    noe132
        3
    noe132  
       322 天前
    不使用全局包 / 使用 docker 部署
    lc1450
        4
    lc1450  
    OP
       322 天前
    @zzk1989 @coffeedeveloper 好的,谢谢 有空试试

    @noe132 是个好办法, 谢谢了
    libook
        5
    libook  
       322 天前
    npm 自己其实也是被当做一个包放在全局的 node_modules 下的,你可以把新版的 npm 覆盖过去。

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

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

    npm config set prefix ~/.npm-global
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2863 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:48 · PVG 22:48 · LAX 07:48 · JFK 10:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.