背景
在使用uniapp开发项目时,多数情况下是使用hbuildx工具直接创建项目开发的,但在发布上线时往往需要集成jenkins,将踩坑过程记录一下。
实现过程及细节坑点
- 通过vue-cli新建项目 (链接:uniapp.dcloud.io/quickstart-…
- 坑点:运行: vue create -p dcloudio/uni-preset-vue my-project 报错
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 目录下面
- 运行项目:报错node-sass 找不到,这是由于通过Hbuildx新建的项目sass自动安装了,vue-cli新建的项目不会自动添加,需手动安装
解决: 安装 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版本,简单一些
重新 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