如何为两个Laravel项目分别配置不同的Node版本?
解决方案:在Ubuntu上为不同Laravel项目使用不同Node版本
完全懂你的烦恼——老项目依赖的Gulp在新Node环境下跑崩,新项目的Webpack又死磕最新Node版本,两头卡确实难受。好在Ubuntu上完全能同时装多个Node版本,还能给每个项目单独指定所需版本,下面一步步给你捋清楚怎么做:
1. 先装nvm(Node版本管理器)
这是管理多Node版本最顺手的工具,没有之一:
- 先卸载系统里已有的Node/npm(避免冲突,没装过的话跳过这步):
sudo apt remove nodejs npm - 用官方脚本安装nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash - 重启终端,或者执行命令让nvm立即生效:
source ~/.bashrc(如果你用zsh终端,就换成source ~/.zshrc) - 验证安装成功:输入
nvm --version,能显示版本号就没问题了
2. 安装你需要的两个Node版本
假设你的Gulp项目需要Node 16(大部分老Gulp兼容这个版本),Webpack项目需要最新稳定版Node 20:
- 安装旧版本:
nvm install 16 - 安装最新稳定版:
nvm install --lts(或者直接指定版本nvm install 20) - 查看已安装的所有版本:
nvm ls,能看到你装的版本,带*的是当前正在用的
3. 给每个项目指定专属Node版本
有两种方式,推荐第二种更省心:
方式一:手动临时切换
- 进入Gulp项目的根目录,执行
nvm use 16,此时当前终端的Node就切换成16了,正常跑gulp命令就行 - 进入Webpack项目的根目录,执行
nvm use 20,再运行npm run dev或者Webpack相关命令,完美适配
方式二:自动切换(推荐)
在每个项目的根目录下创建一个.nvmrc文件,里面只写对应的版本号:
- Gulp项目根目录执行:
echo "16" > .nvmrc - Webpack项目根目录执行:
echo "20" > .nvmrc
之后每次进入项目目录,只需要执行nvm use,nvm会自动读取.nvmrc里的版本并切换,不用手动输版本号,超方便
4. 一些额外提醒
- 每个Node版本会自带对应的npm,切换Node版本后npm也会跟着切换,不用单独安装不同版本的npm
- 安装nvm的时候千万别用sudo,它是装在你的用户目录下的,用sudo反而会出权限问题
- 如果用VS Code,终端可以设置自动识别
.nvmrc,不过手动执行nvm use也很简单,没必要纠结设置
这样两个Laravel项目就能各自用对应的Node版本正常运行了,亲测在Ubuntu上完全可行~
内容的提问来源于stack exchange,提问作者6011991
相关产品推荐
相关产品推荐

