GitBucket
4.6.0
Toggle navigation
Sign in
Files
Branches
1
Tags
Issues
Pull Requests
Labels
Milestones
Wiki
08335
/
hivui-platform-template
hivui平台项目模板
Browse code
add
master
1 parent
eb4f3df
commit
297c9628735f550bb173b8679c664c290a661327
caibinghong
authored
on 11 Mar 2022
Showing
4 changed files
build/bin/oper.sh
文档/doc.txt
文档/nginx配置说明.txt
文档/服务器操作.txt
Ignore Space
Show notes
View
build/bin/oper.sh
#!/bin/bash ## 权限问题,用 chmod u+x *.sh ## eg: oper.sh # 用户名 # 项目名 # 操作 (create , restart , start , kill , stop , del , build , sync) # 部署路径 (upload) # 同步内容 (node_modules , build , cli) cmdDir=$( cd $(dirname "$0") pwd ) username=$1 # 用户名 projectName=$2 # 项目名 cmd=$3 # 命令 port=$4 # 端口 domain_name=$5 # 域名 # *.pre2.hieap.cn==>http://192.168.4.192:8001 # *.pre.hieap.cn==>http://192.168.10.242:31167 # ip=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"` # tagIp193="192.168.4.193" # if [[ $ip == *$tagIp193* ]]; then # DEV_BASE_API='http://192.168.4.106:7777/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 # elif [[]];then # # 原192.168.4.192 内网 ,现在是 192.168.4.110 , docker 内ip 172.20.0.3 # DEV_BASE_API='http://e52.hieap.cn/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 # else # # pass 环境 对外 # DEV_BASE_API='http://e5.hieap.cn/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 # fi domain_193='192.168.4.193' domain_open2='open2.hieap.cn' domain_open='open.hieap.cn' if [[ $domain_name == *$domain_193* ]]; DEV_BASE_API='http://192.168.4.106:7777/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 fi if [[ $domain_name == *$domain_open2* ]]; # 原192.168.4.192 内网 ,现在是 192.168.4.110 , docker 内ip 172.20.0.3 DEV_BASE_API='http://e52.hieap.cn/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 fi if [[ $domain_name == *$domain_open* ]]; # pass 环境 对外 DEV_BASE_API='http://e5.hieap.cn/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 fi # tagIp192="192.168.4.192" nginxStr='' function getNginx(){ nginxStr='' # if [[ $ip == *$tagIp193* ]]; then # nginxStr='' # elif [[ $ip == *$tagIp192* ]]; then # # *.pre2.hieap.cn==>http://192.168.4.192:8001 # # 宿主机 4.110 ,docker 内ip 172.20.0.3 # # 内网用户ng 配置 # nginxStr='"'${projectName}'.'${username}'.pre2.hieap.cn" "'${1}'";' # else # # *.pre.hieap.cn==>http://192.168.10.242:32467 # # pass 下的 外网用户 ng 配置 # nginxStr='"'${projectName}'.'${username}'.pre.hieap.cn" "'${1}'";' # fi if [[ $domain_name == *$domain_193* ]]; nginxStr='' fi if [[ $domain_name == *$domain_open2* ]]; # *.pre2.hieap.cn==>http://192.168.4.192:8001 # 宿主机 4.110 ,docker 内ip 172.20.0.3 # 内网用户ng 配置 nginxStr='"'${projectName}'.'${username}'.pre2.hieap.cn" "'${1}'";' fi if [[ $domain_name == *$domain_open* ]]; # *.pre.hieap.cn==>http://192.168.10.242:32467 # pass 下的 外网用户 ng 配置 nginxStr='"'${projectName}'.'${username}'.pre.hieap.cn" "'${1}'";' fi } #BASH_SOURCE[0]用户所在的目录到脚本的路径 ## 获取eap5.0 路径 # eap5Dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" eap5Dir="${cmdDir%/hiruntime*}" projectPath=${eap5Dir}/desktop/preview tmpPath=${eap5Dir}/hiruntime/project/desktop/project-template source='' source=$source'\t<% if(htmlWebpackPlugin.vite){%>\n\t<!--预览时 公共库-->' source=$source'\n\t<script src="\/'${projectName}'\/setting\/desktop\/development.js" type="text\/javascript"><\/script>' source=$source'\n\t<%}%>' source=$source'\n\t<% if(!htmlWebpackPlugin.vite){%>\n\t<!--发布时 公共库-->' source=$source'\n\t<script src="\/${serverName}\/render\/'${username}'\/'${projectName}'\/setting\/desktop\/appsetting.js" type="text\/javascript"><\/script>' source=$source'\n\t<%}%>\n' viteStr='' viteStr=$viteStr'let socketHost = `${__HMR_HOSTNAME__ || location.hostname}:${__HMR_PORT__}`;' viteStr=$viteStr'let socketHostSplit = socketHost.split(".");' viteStr=$viteStr'let reg=/^[0-9]*$/gi;' viteStr=$viteStr'if(reg.test(socketHostSplit[0])==false){socketHost = socketHost.substring(0,socketHost.indexOf(":"));}' nrm del zhc nrm add zhc http://npm.hieap.cn/ nrm use zhc case $cmd in "create") #创建 echo '正在创建桌面端应用...'$(date +%F%n%T) #参数个数判断,至少4个 if [ $# -lt 4 ];then echo "创建项目命令参数不对:$*" echo "创建项目命令正确参数:用户名 项目名 create 桌面预览端口" exit 1 fi # source ${cmdDir}/var_env.sh # echo ${DEV_BASE_API} echo eap5Dir: ${eap5Dir} echo projectPath: ${projectPath} if [ ! -d "${projectPath}/${username}" ];then mkdir "${projectPath}/${username}" #创用户工作空间 fi if [ -d "${projectPath}/${username}/${projectName}" ];then echo "项目名已经存在!" exit 1 fi echo "<1>git正在拉取web端项目基础文件" git clone http://192.168.4.105:8080/gitbucket/git/08335/hivui-platform-template.git "${projectPath}/${username}/${projectName}/deploy" echo "<2>初始化node环境..." # rsync -auz ${tmpPath}/node_modules ${projectPath}/${username}/${projectName}/deploy/ # cp这个命令在复制零碎文件的时候是很慢的 rsync -auz ${tmpPath}/node_modules ${projectPath}/${username}/${projectName}/deploy/ cd ${projectPath}/${username}/${projectName}/deploy/ rm -rf ./build/bin rm -rf ./build/doc.txt echo "<3>初始化相关配置..." ## 修改模板,重命项目名 mv project ${projectName} sed -i 's#\(VITE_APP_USERPATH \?= \?\).*#\1'"/e5/render/${username}"'#g' .env.production sed -i 's#\(VITE_APP_PN \?= \?\).*#\1'"${projectName}/${username}"'#g' ${projectPath}/${username}/${projectName}/deploy/.env.development sed -i 's#\(VITE_APP_BASE_API \?= \?\).*#\1'"${DEV_BASE_API}"'#g' .env.development ## 替换 package.json 的 name 值 author值 ,打包时候输出静态地址是这个 sed -i 's#\("name": \?"\).*#\1'"${projectName}"'",#g' package.json sed -i 's#\("author": \?"\).*#\1'"${username}"'",#g' package.json ## 替换 processes.json 的 args 值 sed -i '4s#\("name": \?"\).*#\1'"vite-${username}-${projectName}"'",#g' processes.json sed -i '7s#\("args": \?"\).*#\1'"--host --port ${port}"'",#g' processes.json cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiLogin sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiMain sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiBirt sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/setting/desktop/appsetting/js/1.0.0 sed -i 's#\(projectName \?= \?\).*#\1"'"${projectName}"'";#g' appsetting.js echo "<4>配置Nginx环境" # /usr/local/nginx/conf/nginx.conf cd /usr/local/nginx/conf getNginx $port sed -i "/${nginxStr}/d" nginx.conf sed -i "/map \$host \$proxy_port{/a ${nginxStr}" nginx.conf cd /usr/local/nginx/sbin # 清缓存 rm -rf /usr/local/nginx/proxy_temp ./nginx -s reload echo "<5>配置node_modules/vite环境" # node_modules/vite 环境 cd ${projectPath}/${username}/${projectName}/deploy/node_modules/vite/dist/client sed -i "s#const.*socketHost.*=.*#${viteStr}#g" client.js sed -i "s#case 'update':.*#case 'update':return;#g" client.js sed -i "s#case.*'full-reload':.*#case 'full-reload':return;#g" client.js echo "<6>正在启动服务..." cd ${projectPath}/${username}/${projectName}/deploy/ npm run pm2:start pm2 save echo "桌面端创建完毕!"$(date +%F%n%T) exit 1 ;; "delete") #删除 #参数个数判断,至少3个 if [ $# -lt 3 ];then echo "删除项目命令参数不对:$*" echo "删除项目命令正确参数:用户名 项目名 delete" exit 1 fi if [ $username = "admin" -a $projectName = "systpl" ] ; then echo "系统模板,不可删除!" exit 1 fi curPid=`pm2 pid vite-${username}-${projectName}` if [ ! -z "$curPid" ];then echo "vite-${username}-${projectName} 正在关闭服务..." pm2 delete "vite-${username}-${projectName}" fi # 删除配nginx #获取processes.json 的端口 portStr=$(cat ${projectPath}/${username}/${projectName}/deploy/processes.json | sed 's/,/\n/g' | grep "args" | sed 's/:/\n/g' | sed '1d' | sed 's/"//g') portNum=`echo $portStr | tr -cd "[0-9]"` # echo $portNum if [ $portNum = '' ];then echo '取不到端口信息!' exit 1; fi cd /usr/local/nginx/conf #设置相关配置 返回到nginxStr getNginx $portNum #删除 sed -i "/${nginxStr}/d" nginx.conf # 清缓存 rm -rf /usr/local/nginx/proxy_temp ./nginx -s reload ### 删除用户项目 rm -rf ${projectPath}/${username}/${projectName} echo "用户:${username} 项目:${projectName} 删除成功!" pm2 save exit 1 ;; "restart") #重启 echo "》》》正在重启服务..." curPid=`pm2 pid vite-${username}-${projectName}` if [ ! -z "$curPid" ];then echo "vite-${username}-${projectName} 正在关闭服务..." pm2 delete "vite-${username}-${projectName}" fi cd ${projectPath}/${username}/${projectName}/deploy/ npm run rm:vite npm run pm2:start pm2 save echo "已经重启服务!!" exit 1 ;; "build") #编译 uploadPath=$4 modules=$5 #参数个数判断,至少3个 # if [ $# -lt 4 ];then # echo "编译项目命令参数不对:$*" # echo "编译项目命令正确参数:用户名 项目名 build 上传服务器路径 [指定编译模块]" # exit 1 # fi ### 用pm2管理,用pm2 重启指定的 rm -rf "${projectPath}/${username}/${projectName}/deploy/dist" cd "${projectPath}/${username}/${projectName}/deploy" buildFlag="building.txt" # touch filename if [ ! -f "$buildFlag" ];then touch "$buildFlag" else echo "已经处于编译状态,请等待..." exit 1; fi if [ ! $modules ]; then echo "正在执行编译所有模块..."$(date +%F%n%T) npm run build ### 编译所有的时候要考相关配置 cd "${projectPath}/${username}/${projectName}/deploy/" if [[ ! -d "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}/funclib/desklib" ]]; then mkdir -p "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}/funclib/desklib" fi rsync -auz "${projectPath}/${username}/${projectName}/deploy/${projectName}/funclib/desklib" "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}/funclib/" else echo "正在执行编译【指定模块】..."$(date +%F%n%T) npm run build:modules $modules fi rm -rf "$buildFlag" ## 删除之前打包文件 rm -rf "${username}_${projectName}.zip" cd "${projectPath}/${username}/${projectName}/deploy/dist" mkdir -p "${projectPath}/${username}/${projectName}/deploy/dist/${username}/${projectName}" rsync -auz "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}" "${projectPath}/${username}/${projectName}/deploy/dist/${username}/" rm -rf "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}" zip -q -r "${username}_${projectName}.zip" ./* rsync -auz "${projectPath}/${username}/${projectName}/deploy/dist/${username}_${projectName}.zip" "${projectPath}/${username}/${projectName}/deploy/" rm -rf "${projectPath}/${username}/${projectName}/deploy/dist/${username}_${projectName}.zip" cd ${projectPath}/${username}/${projectName}/deploy/ if [ -z "$uploadPath" ]; then echo '未传服务器路径,请自行拷贝!' exit 1; fi if [[ ! -d "$uploadPath" ]]; then echo "编译命令: 上传文件夹不存在, 正在帮您创建目录..." mkdir -p "${uploadPath}" fi echo "正在拷到服务器目录:${uploadPath}" cp -fv "${username}_${projectName}.zip" "${uploadPath}" echo "(‐^▽^‐) 编译打包成功!"$(date +%F%n%T) ;; "sync") #同步环境 #参数个数判断,至少4个 if [ $# -lt 4 ];then echo "同步项目命令参数不对:$*" echo "同步项目命令正确参数:用户名 项目名 sync 同步方式" exit 1 fi way=$4 if [ $way = 'sysfunc' ];then #同步系统功能 sysfuncFlagPath="${projectPath}/${username}/${projectName}/hc-birt-platf-更新中" if [[ ! -d "${sysfuncFlagPath}" ]]; then mkdir -p "${sysfuncFlagPath}" else echo "已经相关人员同步中,请稍候..."; exit 1; fi echo "》》》同步系统功能..."$(date +%F%n%T) git clone http://192.168.4.105:8080/gitbucket/git/js-team2/zhc-birt-platf.git ${eap5Dir}/hiruntime/project/desktop/__zhc-birt-platf rm -rf ${eap5Dir}/hiruntime/project/desktop/zhc-birt-platf rsync -auz ${eap5Dir}/hiruntime/project/desktop/__zhc-birt-platf/project/* ${eap5Dir}/hiruntime/workspace/${username}/${projectName}/ rm -rf ${eap5Dir}/hiruntime/project/desktop/__zhc-birt-platf echo "》》》系统功能已同步!"$(date +%F%n%T) # 删除临时文件标识,以准备下次更新判断 rm -rf "${sysfuncFlagPath}" exit fi if [ $way = 'nginx' ];then #nginx环境 #获取processes.json 的端口 portStr=$(cat ${projectPath}/${username}/${projectName}/deploy/processes.json | sed 's/,/\n/g' | grep "args" | sed 's/:/\n/g' | sed '1d' | sed 's/"//g') portNum=`echo $portStr | tr -cd "[0-9]"` # echo $portNum if [ $portNum = '' ];then echo '取不到端口信息!' exit 1; fi cd /usr/local/nginx/conf #设置相关配置 返回到nginxStr getNginx $portNum #删除 sed -i "/${nginxStr}/d" nginx.conf echo '删除nginx相关配置!' #添加 sed -i "/map \$host \$proxy_port{/a ${nginxStr}" nginx.conf echo ${nginxStr} echo '添加nginx相关配置!' cd /usr/local/nginx/sbin # 清缓存 rm -rf /usr/local/nginx/proxy_temp ./nginx -s reload echo "》》》nginx环境已同步!" exit 1; fi # 以下注释不能用,多人点击同步文件会缺失 # rm -rf ${eap5Dir}/hiruntime/project/desktop/project-template # rsync -auz ${eap5Dir}/hiruntime/project/desktop/__gittmp ${eap5Dir}/hiruntime/project/desktop/project-template # rm -rf ${eap5Dir}/hiruntime/project/desktop/__gittmp case $way in "build") #同步打包环境 echo "》》》正在同步打包环境..."$(date +%F%n%T) rsync -auz ${tmpPath}/build ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/babel.config.js ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.postcssrc.js ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.browserslistrc ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/vite-plugin ${projectPath}/${username}/${projectName}/deploy/ echo "》》》打包环境已同步!"$(date +%F%n%T) exit 1 ;; "hiui") #同步hiui资源库 echo "》》》正在同步hi-ui库..."$(date +%F%n%T) cd "${tmpPath}/" hiuiFlagPath="${projectPath}/${username}/${projectName}/hi-ui-更新中" if [[ ! -d "${hiuiFlagPath}" ]]; then mkdir -p "${hiuiFlagPath}" else echo "已经相关人员同步中,请稍候..."; exit 1; fi npm i hi-ui -S rm -rf ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-ui rsync -auz ${tmpPath}/node_modules/hi-ui ${projectPath}/${username}/${projectName}/deploy/node_modules/ ## 取hi-ui版本 并更新root package.json ## cd ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-ui/ ## sed -i 's#\("name": \?"\).*#\1'"${projectName}"'",#g' package.json echo "hiui已同步!"$(date +%F%n%T) # 删除临时文件标识,以准备下次更新判断 rm -rf "${hiuiFlagPath}" ;; "taskcenter") #同步环境 echo "》》》正在同步任务中心..."$(date +%F%n%T) cd "${tmpPath}/" taskcenterFlagPath="${projectPath}/${username}/${projectName}/hi-taskcenter-更新中" if [[ ! -d "${taskcenterFlagPath}" ]]; then mkdir -p "${taskcenterFlagPath}" else echo "已经相关人员同步中,请稍候..."; exit 1; fi npm i hi-taskcenter -S rm -rf ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-taskcenter rsync -auz ${tmpPath}/node_modules/hi-taskcenter ${projectPath}/${username}/${projectName}/deploy/node_modules/ ## 取hi-taskcenter版本 并更新root package.json ## cd ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-taskcenter/ ## sed -i 's#\("name": \?"\).*#\1'"${projectName}"'",#g' package.json echo "任务中心已同步!"$(date +%F%n%T) # 删除临时文件标识,以准备下次更新判断 rm -rf "${taskcenterFlagPath}" ;; "cli") #程序环境 echo "开始同步..."$(date +%F%n%T) if [[ ! -d "${eap5Dir}/hiruntime/project/desktop/__gittmp" ]]; then #可以更新 git clone http://192.168.4.105:8080/gitbucket/git/08335/hivui-platform-template.git ${eap5Dir}/hiruntime/project/desktop/__gittmp rsync -auz ${eap5Dir}/hiruntime/project/desktop/__gittmp/ ${tmpPath} else echo "已经相关人员同步中,请稍候..."; exit 1; fi rsync -auz ${tmpPath}/assets_platform ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/index.html ${projectPath}/${username}/${projectName}/deploy rsync -auz ${tmpPath}/template.html ${projectPath}/${username}/${projectName}/deploy/ echo "》》》静态共用库已同步!" rsync -auz ${tmpPath}/project/hivuiLogin ${projectPath}/${username}/${projectName}/deploy/${projectName}/ cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiLogin sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html echo "》》》登录模板已同步!" rsync -auz ${tmpPath}/project/hivuiMain ${projectPath}/${username}/${projectName}/deploy/${projectName}/ cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiMain sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html echo "》》》主页模板已同步!" rsync -auz ${tmpPath}/project/hivuiBirt ${projectPath}/${username}/${projectName}/deploy/${projectName}/ cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiBirt sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html echo "》》》报表模板同步!" cd "${tmpPath}/" npm i # npm rebuild rsync -auz ${tmpPath}/node_modules ${projectPath}/${username}/${projectName}/deploy/ echo "》》》node环境已同步!" cd "${tmpPath}/" npm i hi-ui -S rm -rf ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-ui rsync -auz ${tmpPath}/node_modules/hi-ui ${projectPath}/${username}/${projectName}/deploy/node_modules/ echo "》》》hi-ui库已同步!" rsync -auz ${tmpPath}/build ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/babel.config.js ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.postcssrc.js ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.browserslistrc ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/vite-plugin ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.env.development ${projectPath}/${username}/${projectName}/deploy/.env.development rsync -auz ${tmpPath}/.env.production ${projectPath}/${username}/${projectName}/deploy/.env.production rsync -auz ${tmpPath}/.env.staging ${projectPath}/${username}/${projectName}/deploy/.env.staging rsync -auz ${tmpPath}/vite.config.js ${projectPath}/${username}/${projectName}/deploy/vite.config.js echo "》》》已同步程序环境(build、babel.config.js、.postcssrc.js、.browserslistrc、vite-plugin、.env.development、.env.production、.env.staging、vite.config.js)..." # source ${cmdDir}/var_env.sh ### 设置环境变量 cd ${projectPath}/${username}/${projectName}/deploy/ sed -i 's#\(VITE_APP_USERPATH \?= \?\).*#\1'"/e5/render/${username}"'#g' .env.production sed -i 's#\(VITE_APP_BASE_API \?= \?\).*#\1'"${DEV_BASE_API}"'#g' ${projectPath}/${username}/${projectName}/deploy/.env.development sed -i 's#\(VITE_APP_PN \?= \?\).*#\1'"${projectName}/${username}"'#g' ${projectPath}/${username}/${projectName}/deploy/.env.development sed -i 's#\(VITE_APP_PN \?= \?\).*#\1'"${projectName}/${username}"'#g' ${projectPath}/${username}/${projectName}/deploy/.env.staging ### node_modules/vite 环境 cd ${projectPath}/${username}/${projectName}/deploy/node_modules/vite/dist/client # sed 's/要替换的内容/新的内容/' # 将所有的数字替换成内容 # sed 's/[0-9]/好的/g' testFile2.txt sed -i "s#const.*socketHost.*=.*#${viteStr}#g" client.js sed -i "s#case 'update':.*#case 'update':return;#g" client.js sed -i "s#case.*'full-reload':.*#case 'full-reload':return;#g" client.js echo "》》》程序环境已同步!"$(date +%F%n%T) # 删除临时文件标识,以准备下次更新判断 rm -rf ${eap5Dir}/hiruntime/project/desktop/__gittmp ;; esac rsync -auz ${tmpPath}/package.json ${projectPath}/${username}/${projectName}/deploy/package.json cd ${projectPath}/${username}/${projectName}/deploy/ ## 替换 package.json 的 name 值 sed -i 's#\("name": \?"\).*#\1'"${projectName}"'",#g' package.json sed -i 's#\("author": \?"\).*#\1'"${username}"'",#g' package.json #获取processes.json 的端口 portStr=$(cat ${projectPath}/${username}/${projectName}/deploy/processes.json | sed 's/,/\n/g' | grep "args" | sed 's/:/\n/g' | sed '1d' | sed 's/"//g') portNum=`echo $portStr | tr -cd "[0-9]"` # echo $portNum sed -i 's#\("dev": \?"\).*#\1'"vite --host --port ${portNum}"'",#g' package.json echo "》》》正在重启服务..."$(date +%F%n%T) pm2 stop "vite-${username}-${projectName}" pm2 delete "vite-${username}-${projectName}" npm run rm:vite npm run pm2:start pm2 save echo "》》》已经重启服务!!"$(date +%F%n%T) ;; esac
#!/bin/bash ## 权限问题,用 chmod u+x *.sh ## eg: oper.sh # 用户名 # 项目名 # 操作 (create , restart , start , kill , stop , del , build , sync) # 部署路径 (upload) # 同步内容 (node_modules , build , cli) cmdDir=$( cd $(dirname "$0") pwd ) username=$1 #用户名 projectName=$2 #项目名 cmd=$3 #命令 port=$4 #端口 # *.pre2.hieap.cn==>http://192.168.4.192:8001 # *.pre.hieap.cn==>http://192.168.10.242:31167 ip=`ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"` tagIp="192.168.4.193" if [[ $ip == *$tagIp* ]]; then DEV_BASE_API='http://192.168.4.106:7777/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 else DEV_BASE_API='http://e52.hieap.cn/' #传给配置 .env.development 的 VITE_APP_BASE_API 做后端请求数据 fi tagIp192="192.168.4.192" nginxStr='' function getNginx(){ nginxStr='' if [[ $ip == *$tagIp192* ]]; then # *.pre2.hieap.cn==>http://192.168.4.192:8001 nginxStr='"'${projectName}'.'${username}'.pre2.hieap.cn" "'${1}'";' elif [[ $ip == *$tagIp* ]]; then nginxStr='' else # *.pre.hieap.cn==>http://192.168.10.242:32467 nginxStr='"'${projectName}'.'${username}'.pre.hieap.cn" "'${1}'";' fi } #BASH_SOURCE[0]用户所在的目录到脚本的路径 ## 获取eap5.0 路径 # eap5Dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" eap5Dir="${cmdDir%/hiruntime*}" projectPath=${eap5Dir}/desktop/preview tmpPath=${eap5Dir}/hiruntime/project/desktop/project-template source='' source=$source'\t<% if(htmlWebpackPlugin.vite){%>\n\t<!--预览时 公共库-->' source=$source'\n\t<script src="\/'${projectName}'\/setting\/desktop\/development.js" type="text\/javascript"><\/script>' source=$source'\n\t<%}%>' source=$source'\n\t<% if(!htmlWebpackPlugin.vite){%>\n\t<!--发布时 公共库-->' source=$source'\n\t<script src="\/${serverName}\/render\/'${username}'\/'${projectName}'\/setting\/desktop\/appsetting.js" type="text\/javascript"><\/script>' source=$source'\n\t<%}%>\n' viteStr='' viteStr=$viteStr'let socketHost = `${__HMR_HOSTNAME__ || location.hostname}:${__HMR_PORT__}`;' viteStr=$viteStr'let socketHostSplit = socketHost.split(".");' viteStr=$viteStr'let reg=/^[0-9]*$/gi;' viteStr=$viteStr'if(reg.test(socketHostSplit[0])==false){socketHost = socketHost.substring(0,socketHost.indexOf(":"));}' nrm del zhc nrm add zhc http://npm.hieap.cn/ nrm use zhc case $cmd in "create") #创建 echo '正在创建桌面端应用...'$(date +%F%n%T) #参数个数判断,至少4个 if [ $# -lt 4 ];then echo "创建项目命令参数不对:$*" echo "创建项目命令正确参数:用户名 项目名 create 桌面预览端口" exit 1 fi # source ${cmdDir}/var_env.sh # echo ${DEV_BASE_API} echo eap5Dir: ${eap5Dir} echo projectPath: ${projectPath} if [ ! -d "${projectPath}/${username}" ];then mkdir "${projectPath}/${username}" #创用户工作空间 fi if [ -d "${projectPath}/${username}/${projectName}" ];then echo "项目名已经存在!" exit 1 fi echo "<1>git正在拉取web端项目基础文件" git clone http://192.168.4.105:8080/gitbucket/git/08335/hivui-platform-template.git "${projectPath}/${username}/${projectName}/deploy" echo "<2>初始化node环境..." # rsync -auz ${tmpPath}/node_modules ${projectPath}/${username}/${projectName}/deploy/ # cp这个命令在复制零碎文件的时候是很慢的 rsync -auz ${tmpPath}/node_modules ${projectPath}/${username}/${projectName}/deploy/ cd ${projectPath}/${username}/${projectName}/deploy/ rm -rf ./build/bin rm -rf ./build/doc.txt echo "<3>初始化相关配置..." ## 修改模板,重命项目名 mv project ${projectName} sed -i 's#\(VITE_APP_USERPATH \?= \?\).*#\1'"/e5/render/${username}"'#g' .env.production sed -i 's#\(VITE_APP_PN \?= \?\).*#\1'"${projectName}/${username}"'#g' ${projectPath}/${username}/${projectName}/deploy/.env.development sed -i 's#\(VITE_APP_BASE_API \?= \?\).*#\1'"${DEV_BASE_API}"'#g' .env.development ## 替换 package.json 的 name 值 author值 ,打包时候输出静态地址是这个 sed -i 's#\("name": \?"\).*#\1'"${projectName}"'",#g' package.json sed -i 's#\("author": \?"\).*#\1'"${username}"'",#g' package.json ## 替换 processes.json 的 args 值 sed -i '4s#\("name": \?"\).*#\1'"vite-${username}-${projectName}"'",#g' processes.json sed -i '7s#\("args": \?"\).*#\1'"--host --port ${port}"'",#g' processes.json cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiLogin sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiMain sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiBirt sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/setting/desktop/appsetting/js/1.0.0 sed -i 's#\(projectName \?= \?\).*#\1"'"${projectName}"'";#g' appsetting.js echo "<4>配置Nginx环境" # /usr/local/nginx/conf/nginx.conf cd /usr/local/nginx/conf getNginx $port sed -i "/${nginxStr}/d" nginx.conf sed -i "/map \$host \$proxy_port{/a ${nginxStr}" nginx.conf cd /usr/local/nginx/sbin # 清缓存 rm -rf /usr/local/nginx/proxy_temp ./nginx -s reload echo "<5>配置node_modules/vite环境" # node_modules/vite 环境 cd ${projectPath}/${username}/${projectName}/deploy/node_modules/vite/dist/client sed -i "s#const.*socketHost.*=.*#${viteStr}#g" client.js sed -i "s#case 'update':.*#case 'update':return;#g" client.js sed -i "s#case.*'full-reload':.*#case 'full-reload':return;#g" client.js echo "<6>正在启动服务..." cd ${projectPath}/${username}/${projectName}/deploy/ npm run pm2:start pm2 save echo "桌面端创建完毕!"$(date +%F%n%T) exit 1 ;; "delete") #删除 #参数个数判断,至少3个 if [ $# -lt 3 ];then echo "删除项目命令参数不对:$*" echo "删除项目命令正确参数:用户名 项目名 delete" exit 1 fi if [ $username = "admin" -a $projectName = "systpl" ] ; then echo "系统模板,不可删除!" exit 1 fi curPid=`pm2 pid vite-${username}-${projectName}` if [ ! -z "$curPid" ];then echo "vite-${username}-${projectName} 正在关闭服务..." pm2 delete "vite-${username}-${projectName}" fi # 删除配nginx #获取processes.json 的端口 portStr=$(cat ${projectPath}/${username}/${projectName}/deploy/processes.json | sed 's/,/\n/g' | grep "args" | sed 's/:/\n/g' | sed '1d' | sed 's/"//g') portNum=`echo $portStr | tr -cd "[0-9]"` # echo $portNum if [ $portNum = '' ];then echo '取不到端口信息!' exit 1; fi cd /usr/local/nginx/conf #设置相关配置 返回到nginxStr getNginx $portNum #删除 sed -i "/${nginxStr}/d" nginx.conf # 清缓存 rm -rf /usr/local/nginx/proxy_temp ./nginx -s reload ### 删除用户项目 rm -rf ${projectPath}/${username}/${projectName} echo "用户:${username} 项目:${projectName} 删除成功!" pm2 save exit 1 ;; "restart") #重启 echo "》》》正在重启服务..." curPid=`pm2 pid vite-${username}-${projectName}` if [ ! -z "$curPid" ];then echo "vite-${username}-${projectName} 正在关闭服务..." pm2 delete "vite-${username}-${projectName}" fi cd ${projectPath}/${username}/${projectName}/deploy/ npm run rm:vite npm run pm2:start pm2 save echo "已经重启服务!!" exit 1 ;; "build") #编译 uploadPath=$4 modules=$5 #参数个数判断,至少3个 # if [ $# -lt 4 ];then # echo "编译项目命令参数不对:$*" # echo "编译项目命令正确参数:用户名 项目名 build 上传服务器路径 [指定编译模块]" # exit 1 # fi ### 用pm2管理,用pm2 重启指定的 rm -rf "${projectPath}/${username}/${projectName}/deploy/dist" cd "${projectPath}/${username}/${projectName}/deploy" buildFlag="building.txt" # touch filename if [ ! -f "$buildFlag" ];then touch "$buildFlag" else echo "已经处于编译状态,请等待..." exit 1; fi if [ ! $modules ]; then echo "正在执行编译所有模块..."$(date +%F%n%T) npm run build ### 编译所有的时候要考相关配置 cd "${projectPath}/${username}/${projectName}/deploy/" if [[ ! -d "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}/funclib/desklib" ]]; then mkdir -p "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}/funclib/desklib" fi rsync -auz "${projectPath}/${username}/${projectName}/deploy/${projectName}/funclib/desklib" "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}/funclib/" else echo "正在执行编译【指定模块】..."$(date +%F%n%T) npm run build:modules $modules fi rm -rf "$buildFlag" ## 删除之前打包文件 rm -rf "${username}_${projectName}.zip" cd "${projectPath}/${username}/${projectName}/deploy/dist" mkdir -p "${projectPath}/${username}/${projectName}/deploy/dist/${username}/${projectName}" rsync -auz "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}" "${projectPath}/${username}/${projectName}/deploy/dist/${username}/" rm -rf "${projectPath}/${username}/${projectName}/deploy/dist/${projectName}" zip -q -r "${username}_${projectName}.zip" ./* rsync -auz "${projectPath}/${username}/${projectName}/deploy/dist/${username}_${projectName}.zip" "${projectPath}/${username}/${projectName}/deploy/" rm -rf "${projectPath}/${username}/${projectName}/deploy/dist/${username}_${projectName}.zip" cd ${projectPath}/${username}/${projectName}/deploy/ if [ -z "$uploadPath" ]; then echo '未传服务器路径,请自行拷贝!' exit 1; fi if [[ ! -d "$uploadPath" ]]; then echo "编译命令: 上传文件夹不存在, 正在帮您创建目录..." mkdir -p "${uploadPath}" fi echo "正在拷到服务器目录:${uploadPath}" cp -fv "${username}_${projectName}.zip" "${uploadPath}" echo "(‐^▽^‐) 编译打包成功!"$(date +%F%n%T) ;; "sync") #同步环境 #参数个数判断,至少4个 if [ $# -lt 4 ];then echo "同步项目命令参数不对:$*" echo "同步项目命令正确参数:用户名 项目名 sync 同步方式" exit 1 fi way=$4 if [ $way = 'sysfunc' ];then #同步系统功能 sysfuncFlagPath="${projectPath}/${username}/${projectName}/hc-birt-platf-更新中" if [[ ! -d "${sysfuncFlagPath}" ]]; then mkdir -p "${sysfuncFlagPath}" else echo "已经相关人员同步中,请稍候..."; exit 1; fi echo "》》》同步系统功能..."$(date +%F%n%T) git clone http://192.168.4.105:8080/gitbucket/git/js-team2/zhc-birt-platf.git ${eap5Dir}/hiruntime/project/desktop/__zhc-birt-platf rm -rf ${eap5Dir}/hiruntime/project/desktop/zhc-birt-platf rsync -auz ${eap5Dir}/hiruntime/project/desktop/__zhc-birt-platf/project/* ${eap5Dir}/hiruntime/workspace/${username}/${projectName}/ rm -rf ${eap5Dir}/hiruntime/project/desktop/__zhc-birt-platf echo "》》》系统功能已同步!"$(date +%F%n%T) # 删除临时文件标识,以准备下次更新判断 rm -rf "${sysfuncFlagPath}" exit fi if [ $way = 'nginx' ];then #nginx环境 #获取processes.json 的端口 portStr=$(cat ${projectPath}/${username}/${projectName}/deploy/processes.json | sed 's/,/\n/g' | grep "args" | sed 's/:/\n/g' | sed '1d' | sed 's/"//g') portNum=`echo $portStr | tr -cd "[0-9]"` # echo $portNum if [ $portNum = '' ];then echo '取不到端口信息!' exit 1; fi cd /usr/local/nginx/conf #设置相关配置 返回到nginxStr getNginx $portNum #删除 sed -i "/${nginxStr}/d" nginx.conf echo '删除nginx相关配置!' #添加 sed -i "/map \$host \$proxy_port{/a ${nginxStr}" nginx.conf echo ${nginxStr} echo '添加nginx相关配置!' cd /usr/local/nginx/sbin # 清缓存 rm -rf /usr/local/nginx/proxy_temp ./nginx -s reload echo "》》》nginx环境已同步!" exit 1; fi # 以下注释不能用,多人点击同步文件会缺失 # rm -rf ${eap5Dir}/hiruntime/project/desktop/project-template # rsync -auz ${eap5Dir}/hiruntime/project/desktop/__gittmp ${eap5Dir}/hiruntime/project/desktop/project-template # rm -rf ${eap5Dir}/hiruntime/project/desktop/__gittmp case $way in "build") #同步打包环境 echo "》》》正在同步打包环境..."$(date +%F%n%T) rsync -auz ${tmpPath}/build ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/babel.config.js ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.postcssrc.js ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.browserslistrc ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/vite-plugin ${projectPath}/${username}/${projectName}/deploy/ echo "》》》打包环境已同步!"$(date +%F%n%T) exit 1 ;; "hiui") #同步hiui资源库 echo "》》》正在同步hi-ui库..."$(date +%F%n%T) cd "${tmpPath}/" hiuiFlagPath="${projectPath}/${username}/${projectName}/hi-ui-更新中" if [[ ! -d "${hiuiFlagPath}" ]]; then mkdir -p "${hiuiFlagPath}" else echo "已经相关人员同步中,请稍候..."; exit 1; fi npm i hi-ui -S rm -rf ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-ui rsync -auz ${tmpPath}/node_modules/hi-ui ${projectPath}/${username}/${projectName}/deploy/node_modules/ ## 取hi-ui版本 并更新root package.json ## cd ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-ui/ ## sed -i 's#\("name": \?"\).*#\1'"${projectName}"'",#g' package.json echo "hiui已同步!"$(date +%F%n%T) # 删除临时文件标识,以准备下次更新判断 rm -rf "${hiuiFlagPath}" ;; "taskcenter") #同步环境 echo "》》》正在同步任务中心..."$(date +%F%n%T) cd "${tmpPath}/" taskcenterFlagPath="${projectPath}/${username}/${projectName}/hi-taskcenter-更新中" if [[ ! -d "${taskcenterFlagPath}" ]]; then mkdir -p "${taskcenterFlagPath}" else echo "已经相关人员同步中,请稍候..."; exit 1; fi npm i hi-taskcenter -S rm -rf ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-taskcenter rsync -auz ${tmpPath}/node_modules/hi-taskcenter ${projectPath}/${username}/${projectName}/deploy/node_modules/ ## 取hi-taskcenter版本 并更新root package.json ## cd ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-taskcenter/ ## sed -i 's#\("name": \?"\).*#\1'"${projectName}"'",#g' package.json echo "任务中心已同步!"$(date +%F%n%T) # 删除临时文件标识,以准备下次更新判断 rm -rf "${taskcenterFlagPath}" ;; "cli") #程序环境 echo "开始同步..."$(date +%F%n%T) if [[ ! -d "${eap5Dir}/hiruntime/project/desktop/__gittmp" ]]; then #可以更新 git clone http://192.168.4.105:8080/gitbucket/git/08335/hivui-platform-template.git ${eap5Dir}/hiruntime/project/desktop/__gittmp rsync -auz ${eap5Dir}/hiruntime/project/desktop/__gittmp/ ${tmpPath} else echo "已经相关人员同步中,请稍候..."; exit 1; fi rsync -auz ${tmpPath}/assets_platform ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/index.html ${projectPath}/${username}/${projectName}/deploy rsync -auz ${tmpPath}/template.html ${projectPath}/${username}/${projectName}/deploy/ echo "》》》静态共用库已同步!" rsync -auz ${tmpPath}/project/hivuiLogin ${projectPath}/${username}/${projectName}/deploy/${projectName}/ cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiLogin sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html echo "》》》登录模板已同步!" rsync -auz ${tmpPath}/project/hivuiMain ${projectPath}/${username}/${projectName}/deploy/${projectName}/ cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiMain sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html echo "》》》主页模板已同步!" rsync -auz ${tmpPath}/project/hivuiBirt ${projectPath}/${username}/${projectName}/deploy/${projectName}/ cd ${projectPath}/${username}/${projectName}/deploy/${projectName}/hivuiBirt sed -i 's/<\/head>/'"${source}"'<\/head>/g' index.html echo "》》》报表模板同步!" cd "${tmpPath}/" npm i # npm rebuild rsync -auz ${tmpPath}/node_modules ${projectPath}/${username}/${projectName}/deploy/ echo "》》》node环境已同步!" cd "${tmpPath}/" npm i hi-ui -S rm -rf ${projectPath}/${username}/${projectName}/deploy/node_modules/hi-ui rsync -auz ${tmpPath}/node_modules/hi-ui ${projectPath}/${username}/${projectName}/deploy/node_modules/ echo "》》》hi-ui库已同步!" rsync -auz ${tmpPath}/build ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/babel.config.js ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.postcssrc.js ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.browserslistrc ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/vite-plugin ${projectPath}/${username}/${projectName}/deploy/ rsync -auz ${tmpPath}/.env.development ${projectPath}/${username}/${projectName}/deploy/.env.development rsync -auz ${tmpPath}/.env.production ${projectPath}/${username}/${projectName}/deploy/.env.production rsync -auz ${tmpPath}/.env.staging ${projectPath}/${username}/${projectName}/deploy/.env.staging rsync -auz ${tmpPath}/vite.config.js ${projectPath}/${username}/${projectName}/deploy/vite.config.js echo "》》》已同步程序环境(build、babel.config.js、.postcssrc.js、.browserslistrc、vite-plugin、.env.development、.env.production、.env.staging、vite.config.js)..." # source ${cmdDir}/var_env.sh ### 设置环境变量 cd ${projectPath}/${username}/${projectName}/deploy/ sed -i 's#\(VITE_APP_USERPATH \?= \?\).*#\1'"/e5/render/${username}"'#g' .env.production sed -i 's#\(VITE_APP_BASE_API \?= \?\).*#\1'"${DEV_BASE_API}"'#g' ${projectPath}/${username}/${projectName}/deploy/.env.development sed -i 's#\(VITE_APP_PN \?= \?\).*#\1'"${projectName}/${username}"'#g' ${projectPath}/${username}/${projectName}/deploy/.env.development sed -i 's#\(VITE_APP_PN \?= \?\).*#\1'"${projectName}/${username}"'#g' ${projectPath}/${username}/${projectName}/deploy/.env.staging ### node_modules/vite 环境 cd ${projectPath}/${username}/${projectName}/deploy/node_modules/vite/dist/client # sed 's/要替换的内容/新的内容/' # 将所有的数字替换成内容 # sed 's/[0-9]/好的/g' testFile2.txt sed -i "s#const.*socketHost.*=.*#${viteStr}#g" client.js sed -i "s#case 'update':.*#case 'update':return;#g" client.js sed -i "s#case.*'full-reload':.*#case 'full-reload':return;#g" client.js echo "》》》程序环境已同步!"$(date +%F%n%T) # 删除临时文件标识,以准备下次更新判断 rm -rf ${eap5Dir}/hiruntime/project/desktop/__gittmp ;; esac rsync -auz ${tmpPath}/package.json ${projectPath}/${username}/${projectName}/deploy/package.json cd ${projectPath}/${username}/${projectName}/deploy/ ## 替换 package.json 的 name 值 sed -i 's#\("name": \?"\).*#\1'"${projectName}"'",#g' package.json sed -i 's#\("author": \?"\).*#\1'"${username}"'",#g' package.json #获取processes.json 的端口 portStr=$(cat ${projectPath}/${username}/${projectName}/deploy/processes.json | sed 's/,/\n/g' | grep "args" | sed 's/:/\n/g' | sed '1d' | sed 's/"//g') portNum=`echo $portStr | tr -cd "[0-9]"` # echo $portNum sed -i 's#\("dev": \?"\).*#\1'"vite --host --port ${portNum}"'",#g' package.json echo "》》》正在重启服务..."$(date +%F%n%T) pm2 stop "vite-${username}-${projectName}" pm2 delete "vite-${username}-${projectName}" npm run rm:vite npm run pm2:start pm2 save echo "》》》已经重启服务!!"$(date +%F%n%T) ;; esac
Ignore Space
Show notes
View
文档/doc.txt
0 → 100644
node webpack 多config 编译执行 https://cloud.tencent.com/developer/section/1477277 parallel-webpack 多config 并行执行编译,这样提高速度 192.168.4.194 项目文件:/filesdisk2/eap5/web/workspace/project/deploy /filesdisk2/eap5/studio/workspace/project/deploy/ 192.168.4.193 项目文件: /opt/eap5/desktop/preview/ deploy最终的项目部署目录 http://192.168.4.194:3000/project/01521/mokuai/shitu/abc/dtv/1.0.0/index.html 让npm run dev在Linux后台 持久运行 nohup npm run dev >/dev/null 2>&1 & exit 杀端口进程 netstat -apn|grep 3000 kill -9 18164 下面几个版本组合(有些版本没有列出来)。 npm install -g node-gyp https://github.com/webpack-contrib/sass-loader/blob/v6.0.7/package.json node-sass 对环境的要求 Node 12 的话要 node-sass 4.12+ 然页sass-loader 版本8的, 配对 node-sass版本4 npm i sass-loader@8.0.2 node-sass@4.13.0 -D npm rebuild node-sass npm i less@4.1.1 less-loader@3.0.0 -D npm cache clean -f rimraf node_modules npm shrinkwrap // npm-shrinkwrap.json 锁定包版本环境 1:npm install webpack -g 2: npm install webpack-cli -g 3: npm init -y 4: npm install webpack --save-dev 5: npm install html-webpack-plugin (html编译插件) 6:npm install clean-webpack-plugin 6.1: npm install webpack-dev-server (服务插件) 6.2: npm install style-loader css-loader (css打包插件) 6.3: npm install file-loader url-loader (文件图片打包插件) 6.4: npm install less-loader (less打包插件) 6.5: npm install sass scss --save-dev (sass scss打包插件) 6.6: npm install sass-loader nade-sass (sass打包插件) 7新建一个src文件夹 和 less文件夹 和webpack.config.js //以element 方式打包各各组件,做为按需导出使用 ElementUI/babel-plugin-component .babelrc "plugins": ["transform-vue-jsx", "transform-runtime", [ "component", { "libraryName": "hi-ui", "style":false } ]], vue2 使用 vite 所需求的步骤: 1、相关包安装 npm i '@vitejs/plugin-vue' '@vue/compiler-sfc' vite vite-plugin-vue2 -D 2、添加vite.confing.js import { createVuePlugin } from "vite-plugin-vue2"; 在配置项中,转vue plugins: [createVuePlugin()], 3、修改vite/dist/client/client.js case 'error': //判断当前出错的页面 let locPath = location.pathname.split('/'); locPath.pop(); if(err.id.indexOf(locPath.join('/'))==-1)break; case 'update': return;//让用户手动去刷新 08335 case 'full-reload': return;//让用户手动去刷新 08335 报类似这样的错误: Current process list running is not in sync with saved list. App BookStack differs. Type ‘pm2 save’ to synchronize. 按先后顺序,执行如下操作: pm2 update pm2 save pm2 list //当dock重新部署时这个重启服务 pm2 resurrect npm i vite@2.3.7 --save-dev //fonticon这个版本才可以有图标显示 webpack5 https://blog.csdn.net/j178202798/category_11141799.html npm run build:debug ./project/zhuomianduanyanshi/biaozhundanju/view/biaodan/dtv/1.0.0 npm run build:modules ./project/WangGeShu/view/ShuWangGe/dtv/1.0.0/desktop webpack 2 vite https://github.com/tnfe/wp2vite/blob/master/README.zh-CN.md 自动化构建工具(三)Parcel https://blog.csdn.net/weixin_42580704/article/details/108378689 https://www.parceljs.cn/getting_started.html /eap5.0/hiruntime/project/desktop/oper.sh admin eap5csxm sync cli /eap5.0/hiruntime/project/desktop/project-template/build/bin/oper.sh cp -rf /eap5.0/hiruntime/project/desktop/project-template/build/bin/oper.sh /eap5.0/hiruntime/project/desktop/ chmod -R 777 /eap5.0/hiruntime/project/desktop /eap5.0/hiruntime/project/hicli.sh 域名 项目类型 用户名 项目 操作 如: 域名 项目类型 用户名 项目名 创建操作 桌面端口 app端口 小程序端口 open2.hieap.cn eap5 0000227 eapProject create 2022 2023 2024 如:项目类型 用户名 项目名 删除操作 eap5 0000227 eapProject delete 如:项目类型 用户名 项目名 同步操作 平台 同步方式 eap5 0000227 eapProject sync desktop hiui eap5 0000227 eapProject sync rn eap5 0000227 eapProject sync xcx 如:项目类型 用户名 项目名 重启操作 平台 端口 eap5 0000227 eapProject restart desktop eap5 0000227 eapProject restart rn 2025 eap5 0000227 eapProject restart xcx 2026 项目类型,工号,项目,命令 ,平台 ,命令参数(逗号分开) eap5 admin eaptpl build desktop 上传路径 模块路径列表(逗号分开) eap5 admin eaptpl build android 上传路径 部署名 eap5 admin eaptpl build xcx 上传路径 部署名 eap5 admin eaptpl build ios 上传路径 部署名 ================linux 命令============================= nginx.conf 中通配域名识别 map $host $proxy_pass{ "mflm.0000221.pre2.hieap.cn" "43447"; } server { listen 8001; server_name ~^(\w)*?\.(\w)*?\.pre2\.hieap\.cn$; location / { proxy_pass http://127.0.0.1:$proxy_pass; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-real-ip $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Origin ""; index index.html index.htm; } } /usr/local/nginx/sbin pm2 startup # 用来启动保存下来的服务列表 pm2 resurrect 端口查看进程 lsof -i :8081 杀端口进程 netstat -apn|grep 3000 kill -9 18164 lsof -i :38889 free -m 查看内存 查看用户进程的内存使用情况 ps auxw|head -1;ps auxw|sort -rn -k3|head -10 杀webpack 进程 ps -ef|grep webpack|grep -v grep|cut -c 9-15|xargs kill -9 使用指令sed -i 's/\r$//' xxxxxxx.sh,上面的指令会把 xxxxxxx.sh 中的\r 替换成空白! 内网: PC http://项目名.工号.pre2.hieap.cn 手机 http://项目名rn.工号.pre2.hieap.cn 小程序 http://项目名xcx.工号.pre2.hieap.cn 文档 http://项目名doc.工号.pre2.hieap.cn 外网: PC http://项目名.工号.pre.hieap.cn 手机 http://项目名rn.工号.pre.hieap.cn 小程序 http://项目名xcx.工号.pre.hieap.cn 文档 http://项目名doc.工号.pre.hieap.cn 【======编译问题 ======】 可能 parallel-webpack cpu太多 可能 happypack cpu太多 目前把 parallel-webpack 降到 1 cpu 结果可以跑的动
Ignore Space
Show notes
View
文档/nginx配置说明.txt
0 → 100644
#user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #error_log "pipe:rollback logs/error_log interval=1d baknum=7 maxsize=2G"; #pid logs/nginx.pid; worker_rlimit_nofile 65535; events { worker_connections 10240; } http { #样式资源加载的配置 include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; #access_log "pipe:rollback logs/access_log interval=1d baknum=7 maxsize=2G" main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; client_header_buffer_size 32k; large_client_header_buffers 8 32k; client_max_body_size 100m; client_body_buffer_size 128k; client_body_temp_path /usr/local/nginx/client_temp 1 2; gzip on; gzip_min_length 1k; #压缩阈值 gzip_buffers 4 16k; #buffer 不用修改 gzip_comp_level 2; #压缩级别:1-10,数字越大压缩的越好,时间也越长 gzip_vary off; gzip_types js css application/script text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg mage/gif image/png image/bmp application/x-bmp image/x-ms-bmp application/vnd.ms-fontobject font/ttf font/opentype font/x-woff; map $host $proxy_port{ "jwjxrn.0000206.pre2.hieap.cn" "37948"; "kfzxcx.0000220.pre2.hieap.cn" "43695"; "kfzrn.0000220.pre2.hieap.cn" "36213"; "kfz.0000220.pre2.hieap.cn" "32934"; "hzlxcx.admin.pre2.hieap.cn" "39101"; "hzlrn.admin.pre2.hieap.cn" "38728"; "hzl.admin.pre2.hieap.cn" "39452"; "test1xcx.0000247.pre2.hieap.cn" "34513"; "test1rn.0000247.pre2.hieap.cn" "40020"; "test1.0000247.pre2.hieap.cn" "40705"; "tpl.0000203.pre2.hieap.cn" "38050"; "newproject.0000207.pre2.hieap.cn" "40650"; "mflm.0000221.pre2.hieap.cn" "43447"; "jwjx.0000206.pre2.hieap.cn" "38889"; "cpp.0000207.pre2.hieap.cn" "36639"; "erp.0000212.pre2.hieap.cn" "46153"; "dcp.0000220.pre2.hieap.cn" "33234"; "cms.0000221.pre2.hieap.cn" "41274"; "hccd.0000221.pre2.hieap.cn" "43837"; "alys.0000299.pre2.hieap.cn" "43785"; "eap5csxm.admin.pre2.hieap.cn" "39784"; } server { listen 8001; server_name ~^(\w)*?\.(\w)*?\.pre2\.hieap\.cn$; location / { proxy_pass http://127.0.0.1:$proxy_port; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header X-real-ip $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Origin ""; proxy_buffer_size 2048k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小 proxy_buffers 16 2048k; #proxy_buffers缓冲区,网页平均在32k以下的设置 proxy_busy_buffers_size 4096k; #高负荷下缓冲大小(proxy_buffers*2) proxy_temp_file_write_size 4096k;#设定缓存文件夹大小,大于这个值,将从upstream服务器传 index index.html index.htm; } } server { listen 5153; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main; location / { root /usr/local/app/visualStudio; index index.html index.htm; try_files $uri $uri/ /index.html; } # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } server { listen 5154; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main; location / { root /usr/local/app/visualStudio_test; index index.html index.htm; try_files $uri $uri/ /index.html; } # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } server { listen 5156; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #access_log "pipe:rollback logs/host.access_log interval=1d baknum=7 maxsize=2G" main; # error_page 500 502 503 504 /50x.html; location / { root /usr/local/app/hieap-devcenter; index index.html index.htm; try_files $uri $uri/ /index.html; } } server { listen 5177; server_name localhost; error_page 500 502 503 504 /50x.html; location / { root /usr/local/app/hiui-mb/dist; index index.html index.htm; } } }
Ignore Space
Show notes
View
文档/服务器操作.txt
0 → 100644
# nginx 目录 /usr/local/nginx/sbin # 4.110 进入docker docker exec -it eap-hirun-dev /bin/bash # 启动配置好的pm2 pm2 resurrect # pm2 路径 dump.pm2 cd /root/.pm2/ ----------------------------------------------------- 方法一:查看进程列表(条件过滤) ps -ef | grep nginx 方法二:直接查看进程pid ps -C nginx -o pid 方法三:通过端口判断 netstat -anp | grep :80 方法四:使用lsof命令来查看80端口是否有程序在运行 lsof -i:80 1、查看nginx 是否启动 ps -ef | grep nginx 2、主程序的 nginx 配指定端口启动 8001 查看 ip 映射情况 3、
Show line notes below