Jenkins在构建前端代码的时候如何切换node版本

背景

项目使用了cesium较新的功能,安装了0.118.0的版本。他需要的node版本为18.18.0以上。而项目因为比较早,如果node版本升级到18.18.0以上,则会报错。所以需要安装依赖时切换node版本为18.20.4。而开发和打包时候node本部是16.20.2 。。。

开发

前提:安装了nvm。

安装依赖时:

sh 复制代码
nvm use 18.20.4
yarn start

开发环境:

sh 复制代码
nvm use 16.20.2
yarn start

部署打包

因项目使用Jenkins打包,其打包对应的流水线脚本为:

sh 复制代码
stage('Build Frontend') {
    steps {
        sh '''
            # 安装nvm并设置环境变量 这里需要代理才能下载
            HTTPS_PROXY=xxx curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
            export NVM_DIR="$HOME/.nvm"
            [ -s "$NVM_DIR/nvm.sh" ] && \\. "$NVM_DIR/nvm.sh"

            # 安装Node.js 18.20.4并安装yarn
            nvm install 18.20.4
            npm install -g yarn

            # 安装依赖
            yarn install

            # 切换Node.js版本到16.20.2
            nvm install 16.20.2
            nvm use 16.20.2
            npm install -g yarn

            echo "当前Node.js版本:"
            node -v

            yarn run build:prod

        '''
    }
}

这段脚本是一个用于Jenkins Pipeline的Stage,其目的是构建前端项目。以下是脚本的详细解释:

  1. sh ''':这是一个shell脚本的多行字符串开始标记,表示接下来的内容将作为shell命令执行。

  2. 安装nvm(Node Version Manager)并设置环境变量:

    • HTTPS_PROXY=xxx:设置HTTPS代理,xxx应替换为实际的代理地址。这是因为在某些网络环境下,需要通过代理才能访问GitHub。
    • curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash:使用curl下载nvm的安装脚本,并通过管道符传递给bash执行。
    • export NVM_DIR="$HOME/.nvm":设置nvm的目录环境变量。
    • [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh":如果nvm.sh文件存在,则执行该文件以初始化nvm环境。
  3. 安装Node.js 18.20.4并安装yarn:

    • nvm install 18.20.4:使用nvm安装Node.js 18.20.4版本。
    • npm install -g yarn:使用npm全局安装yarn包管理器。
  4. 安装依赖:

    • yarn install:运行yarn命令安装项目依赖。
  5. 切换Node.js版本到16.20.2:

    • nvm install 16.20.2:使用nvm安装Node.js 16.20.2版本。
    • nvm use 16.20.2:切换到Node.js 16.20.2版本。
    • npm install -g yarn:再次全局安装yarn,以确保在新的Node.js版本下yarn可用。
  6. 输出当前Node.js版本:

    • echo "当前Node.js版本:":打印提示信息。
    • node -v:输出当前使用的Node.js版本。
  7. 构建生产环境:

    • yarn run build:prod:运行yarn命令,执行项目的生产环境构建脚本。

整个脚本的目的是在一个Jenkins Pipeline中自动化前端项目的构建过程,包括安装nvm、切换Node.js版本、安装依赖以及构建生产环境。

相关推荐
西瓜太郎12345 分钟前
外层模型卡片与分组详情成功率不一致,应该怎么排查?
前端·typescript·go·软件工程·react
GreenTea21 分钟前
vLLM 与 SGLang KV Cache 底层实现机制深度调研报告
前端·后端·算法
几何心凉3 小时前
没有万能模型:我用 AiiOnly Token Plan,把多款大模型的长处拼进同一个项目
前端
kyriewen3 小时前
Claude Code 的额度今天缩水了17%——官方公告上写的是"永久提高25%"
前端·ai编程·claude
雪芽蓝域zzs4 小时前
vue解构平铺VS对象包裹
前端·javascript·vue.js
风骏时光牛马5 小时前
从零到实战,完整AI学习路线
前端
三十而立洋5 小时前
深入理解 Monorepo:子包安装依赖
前端·前端工程化
IT_陈寒5 小时前
Java Stream处理大集合,我的内存怎么就炸了
前端·人工智能·后端
Captaincc6 小时前
AI 用量桌面端-桌面宠物自定义指南
前端·人工智能
OpenTiny社区6 小时前
码力全开,智启前端新生态|OpenTiny 登陆华为全联接大会2026
前端·github