Hbuildx 创建的uniapp 项目集成jenkins

366 阅读2分钟

背景

在使用uniapp开发项目时,多数情况下是使用hbuildx工具直接创建项目开发的,但在发布上线时往往需要集成jenkins,将踩坑过程记录一下。

实现过程及细节坑点

mac@MacdeMacBook-Pro Desktop % vue create -p dcloudio/uni-preset-vue my-project

Fetching remote preset dcloudio/uni-preset-vue...

**Vue CLI v4.5.19**

✨  Creating project in /Users/mac/Desktop/my-project.

🗃  Initializing git repository...

⚙️  Installing CLI plugins. This might take a while...

 ERROR  command failed: pnpm install --reporter silent --shamefully-hoist

解决:node 的版本使用的v17.0.1,改成v14.11.0 (mac端我使用的是nvm 作为node的版本管理工具)

  • 项目下载成功后将工程文件复制到src 目录下面

image.png

  • 运行项目:报错node-sass 找不到,这是由于通过Hbuildx新建的项目sass自动安装了,vue-cli新建的项目不会自动添加,需手动安装

image.png 解决: 安装 node-sass

  • 坑点:sass 国内安装不成功
npm install node-sass

优化方案:

运行命令:npm install node-sass --registry=https://registry.npm.taobao.org

再次运行:报错 node-sass版本不兼容

Syntax Error: Error: Node Sass version 7.0.1 is incompatible with ^4.0.0.

网上方案有重装sass的,我没有试了,直接在项目里指定sass版本,简单一些

image.png

重新 npm install 解决

  • 再配置package.json 中的运行脚本
{
  "name": "my-project",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "build:dev": "cross-env NODE_ENV=production uniapp-cli custom wx-web-dev",
    "build:test": "cross-env NODE_ENV=production uniapp-cli custom wx-web-test",
    "build:product": "cross-env NODE_ENV=production uniapp-cli custom wx-web-product",
    "dev": "cross-env NODE_ENV=development uniapp-cli custom wx-web-dev",
    "test": "cross-env NODE_ENV=development uniapp-cli custom wx-web-test",
    "product": "cross-env NODE_ENV=development uniapp-cli custom wx-web-product"
  },
  "dependencies": {
    "@dcloudio/uni-app-plus": "^2.0.1-34920220630001",
    "@dcloudio/uni-h5": "^2.0.1-34920220630001",
    "@dcloudio/uni-helper-json": "*",
    "@dcloudio/uni-i18n": "^2.0.1-34920220630001",
    "@dcloudio/uni-mp-360": "^2.0.1-34920220630001",
    "@dcloudio/uni-mp-alipay": "^2.0.1-34920220630001",
    "@dcloudio/uni-mp-baidu": "^2.0.1-34920220630001",
    "@dcloudio/uni-mp-jd": "^2.0.1-34920220630001",
    "@dcloudio/uni-mp-kuaishou": "^2.0.1-34920220630001",
    "@dcloudio/uni-mp-lark": "^2.0.1-34920220630001",
    "@dcloudio/uni-mp-qq": "^2.0.1-34920220630001",
    "@dcloudio/uni-mp-toutiao": "^2.0.1-34920220630001",
    "@dcloudio/uni-mp-vue": "^2.0.1-34920220630001",
    "@dcloudio/uni-mp-weixin": "^2.0.1-34920220630001",
    "@dcloudio/uni-mp-xhs": "^2.0.1-34920220630001",
    "@dcloudio/uni-quickapp-native": "^2.0.1-34920220630001",
    "@dcloudio/uni-quickapp-webview": "^2.0.1-34920220630001",
    "@dcloudio/uni-stat": "^2.0.1-34920220630001",
    "@vue/shared": "^3.0.0",
    "core-js": "^3.6.5",
    "flyio": "^0.6.2",
    "node-sass": "^4.0.0",
    "regenerator-runtime": "^0.12.1",
    "vue": "^2.6.11",
    "vuex": "^3.2.0"
  },
  "devDependencies": {
    "@babel/runtime": "~7.17.9",
    "@dcloudio/types": "^3.0.4",
    "@dcloudio/uni-automator": "^2.0.1-34920220630001",
    "@dcloudio/uni-cli-i18n": "^2.0.1-34920220630001",
    "@dcloudio/uni-cli-shared": "^2.0.1-34920220630001",
    "@dcloudio/uni-migration": "^2.0.1-34920220630001",
    "@dcloudio/uni-template-compiler": "^2.0.1-34920220630001",
    "@dcloudio/vue-cli-plugin-hbuilderx": "^2.0.1-34920220630001",
    "@dcloudio/vue-cli-plugin-uni": "^2.0.1-34920220630001",
    "@dcloudio/vue-cli-plugin-uni-optimize": "^2.0.1-34920220630001",
    "@dcloudio/webpack-uni-mp-loader": "^2.0.1-34920220630001",
    "@dcloudio/webpack-uni-pages-loader": "^2.0.1-34920220630001",
    "@vue/cli-plugin-babel": "~4.5.19",
    "@vue/cli-service": "~4.5.19",
    "babel-plugin-import": "^1.11.0",
    "cross-env": "^7.0.2",
    "jest": "^25.4.0",
    "mini-types": "*",
    "miniprogram-api-typings": "*",
    "postcss-comment": "^2.0.0",
    "vue-template-compiler": "^2.6.11"
  },
  "browserslist": [
    "Android >= 4.4",
    "ios >= 9"
  ],
  "resolutions": {
    "@babel/runtime": "~7.17.9"
  },
  "uni-app": {
    "scripts": {
      "wx-web-dev": {
        "title": "xxx-开发环境",
        "env": {
          "UNI_PLATFORM": "h5"
        },
        "define": {
          "IRENT-DEV": true
        }
      },
      "wx-web-test": {
        "title": "xxx-测试环境",
        "env": {
          "UNI_PLATFORM": "h5"
        },
        "define": {
          "IRENT-TEST": true
        }
      },
      "wx-web-product": {
        "title": "xxx-生产环境",
        "env": {
          "UNI_PLATFORM": "h5"
        },
        "define": {
          "IRENT-PROD": true
        }
      }
    }
  }
}

完事配置jenkinsfile