背景:
jenkins 中構建 uniapp 應用
?
配置:
1. 將windows HbuilderX 插件目錄下的 uniapp-cli 文件夾復制到 服務器? /var/jenkins_home/uniapp-cli?
2. jenkins 構建步驟增加?執行 shell ,內容如下
echo ">> 構建中..."# 打包前端 export LANG=en_US.UTF-8npm install -g cnpm --registry=https://registry.npmmirror.comrm -rf node_modules package-lock.json# 安裝依賴npm install# 強制使用 sass(dart-sass)npm install --save-dev sassecho "npm install completed"echo "Before changing directory"cd /var/jenkins_home/uniapp-cliecho "After changing directory"echo 12345export UNI_PLATFORM=h5export NODE_ENV=releaseexport UNI_INPUT_DIR=/var/jenkins_home/workspace/PAD.H5.TESTexport UNI_OUTPUT_DIR=/var/jenkins_home/workspace/PAD.H5.TEST/unpackage/dist/build/h5echo "$NODE_ENV"echo "$UNI_INPUT_DIR"echo "$UNI_OUTPUT_DIR"# 執行構建node bin/uniapp-cli.js
問題:?
1. 執行打包命令報錯找不到?node-sass-china?
[BABEL] Note: The code generator has deoptimised the styling of /var/jenkins_home/workspace/PAD.H5.TEST/node_modules/lodash/lodash.js as it exceeds the max of 500KB.ERROR Failed to compile with 1 error2:14:19 PMerror in ../workspace/PAD.H5.TEST/App.vue?vue&type=style&index=1&lang=scss&Syntax Error: Error: Cannot find module '/var/jenkins_home/compile-node-sass/node_modules/node-sass-china'
Require stack:
- /var/jenkins_home/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/getDefaultSassImplementation.js
- /var/jenkins_home/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/getSassImplementation.js
- /var/jenkins_home/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/index.js
- /var/jenkins_home/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/sass-loader/dist/cjs.js
- /var/jenkins_home/uniapp-cli/node_modules/loader-runner/lib/loadLoader.js
- /var/jenkins_home/uniapp-cli/node_modules/loader-runner/lib/LoaderRunner.js
- /var/jenkins_home/uniapp-cli/node_modules/webpack/lib/NormalModule.js
- /var/jenkins_home/uniapp-cli/node_modules/webpack/lib/NormalModuleFactory.js
- /var/jenkins_home/uniapp-cli/node_modules/webpack/lib/Compiler.js
- /var/jenkins_home/uniapp-cli/node_modules/webpack/lib/webpack.js
- /var/jenkins_home/uniapp-cli/node_modules/@dcloudio/uni-cli-shared/lib/util.js
- /var/jenkins_home/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-hbuilderx/index.js
- /var/jenkins_home/uniapp-cli/node_modules/@vue/cli-service/lib/Service.js
- /var/jenkins_home/uniapp-cli/bin/uniapp-cli.js
2. 將windows 下的?node-sass-china 目錄拷貝到 服務器之后報錯 文件不匹配
Please note that in running mode, due to log output, sourcemap, and uncompressed source code, the performance and package size are not as good as release mode.
?Browserslist: caniuse-lite is outdated. Please run:npx update-browserslist-db@latestWhy you should do it regularly: https://github.com/browserslist/update-db#readme?- Start to compile the current project to the h5 platform...
[0;31m--> LibSass 的二進制文件(/var/jenkins_home/compile-node-sass/node_modules/node-sass-china/vendor/linux-x64-93/binding.node)缺失,請執行下面3條命令下載對應版本的二進制文件:(有可能引發此錯誤的原因是 Node 版本變更)[0m mkdir -p /var/jenkins_home/compile-node-sass/node_modules/node-sass-china/vendor/linux-x64-93cd /var/jenkins_home/compile-node-sass/node_modules/node-sass-china/vendor/linux-x64-93curl -o binding.node http://cdn.npm.taobao.org/dist/node-sass/v4.7.2/linux-x64-93_binding.node
[0;31m--> MacOS 、Unix/Linux 請根據權限使用 sudo [0m
Build step 'Execute shell' marked build as failure
SSH: Current build result is [FAILURE], not going to run.
Finished: FAILURE
解決辦法:?
根據報錯信息在 這里下載對應的?binding.node 文件, 重命名后放到對應的目錄
https://github.com/sass/node-sass/releases
打包成功~~~~~~~~~~~~~~~~~~~