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

相关推荐
gnip5 小时前
企业级配置式表单组件封装
前端·javascript·vue.js
一只叫煤球的猫6 小时前
写代码很6,面试秒变菜鸟?不卖课,面试官视角走心探讨
前端·后端·面试
excel7 小时前
Three.js 材质(Material)详解 —— 区别、原理、场景与示例
前端
掘金安东尼7 小时前
抛弃自定义模态框:原生Dialog的实力
前端·javascript·github
hj5914_前端新手11 小时前
javascript基础- 函数中 this 指向、call、apply、bind
前端·javascript
薛定谔的算法11 小时前
低代码编辑器项目设计与实现:以JSON为核心的数据驱动架构
前端·react.js·前端框架
Hilaku11 小时前
都2025年了,我们还有必要为了兼容性,去写那么多polyfill吗?
前端·javascript·css
yangcode11 小时前
iOS 苹果内购 Storekit 2
前端
LuckySusu11 小时前
【js篇】JavaScript 原型修改 vs 重写:深入理解 constructor的指向问题
前端·javascript
LuckySusu11 小时前
【js篇】如何准确获取对象自身的属性?hasOwnProperty深度解析
前端·javascript