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版本、安装依赖以及构建生产环境。

相关推荐
佛系打工仔3 小时前
绘制K线第二章:背景网格绘制
android·前端·架构
明天好,会的4 小时前
分形生成实验(五):人机协同破局--30万token揭示Actix-web状态管理的微妙边界
运维·服务器·前端
C_心欲无痕5 小时前
nginx - alias 和 root 的区别详解
运维·前端·nginx
我是苏苏7 小时前
Web开发:C#通过ProcessStartInfo动态调用执行Python脚本
java·服务器·前端
无羡仙7 小时前
Vue插槽
前端·vue.js
用户6387994773058 小时前
每组件(Per-Component)与集中式(Centralized)i18n
前端·javascript
SsunmdayKT8 小时前
React + Ts eslint配置
前端
开始学java8 小时前
useEffect 空依赖 + 定时器 = 闭包陷阱?count 永远停在 1 的坑我踩透了
前端
zerosrat8 小时前
从零实现 React Native(2): 跨平台支持
前端·react native