背景:项目安装时需要切换到node 10.x 安装依赖,我想写一个脚本自动切换到node10.x去安装
脚本执行后node确实切换到10.x了,但是yarn执行后其实使用的是node切换之前的node版本(14)
widnows上面是好的!!mac下面用zsh跑就出现了错误
widnows上面是好的!!mac下面用zsh跑就出现了错误
widnows上面是好的!!mac下面用zsh跑就出现了错误
下面是mac下面的日志:
问题:为什么在脚本里面使用 nvm use 10.x 然后执行yarn。
yarn安装依赖的时候用的却不是node 10.x? 怎么解决这个问题?
package.json
"scripts": {
"installProject": "bash ./scripts/install.sh"
},
install.sh
检查node版本是否为10.24.1, 如果不是安装nvm并切换node版本到10.24.1
#!/bin/bash
# Exit on error
set -e
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
# 检查当前 Node.js 版本是否为 10.24.1
current_version=$(node -v)
if [[ $current_version == v10.24.1 ]]; then
echo "当前node版本为 10.24.1,无需切换版本。 "
echo "开始安装项目依赖---------"
yarn
echo "安装完成---------"
exit 0
fi
# 加载 nvm
if [[ -s "$HOME/.nvm/nvm.sh" ]]; then
source "$HOME/.nvm/nvm.sh"
echo "成功加载 nvm 配置文件"
fi
# 检查 nvm 是否已安装
if command -v nvm &> /dev/null; then
echo "nvm 已安装"
else
echo "nvm 未找到,正在安装..."
# https://gitee.com/RubyKids/nvm-cn
bash ${script_dir}/nvm/install.sh
echo "nvm 安装完成"
fi
refresh_shell() {
source "$HOME/.zshrc"
source "$HOME/.bashrc"
}
refresh_shell
# 检查 Node.js 10.24.1 是否已安装
if nvm ls | grep -q "v10.24.1"; then
echo "Node.js 10.24.1 已安装"
else
echo "安装 Node.js 10.24.1..."
nvm install 10.24.1
fi
# 切换到 Node.js 10.24.1
nvm use 10.24.1
refresh_shell
# 检查 Node.js 版本
node_version=$(node -v)
if [[ $node_version != v10.24.1 ]]; then
echo "Node版本切换10.24.1失败,当前node版本${node_version},请手动安装或切换到正确的版本。"
exit 1
fi
echo "开始安装项目依赖---------"
yarn
echo "安装完成---------"
另一种
`source ~/.nvm/nvm.sh
nvm use 10.x
yarn`