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 打包时要指定,publishPath 静态目录带 工号
master
1 parent
479d01b
commit
e18ee5b86d884567563582362e6ba94e3d98ba1e
caibinghong
authored
on 22 Oct 2021
Showing
2 changed files
build/bin/create.sh
build/webpack.config.js
Ignore Space
Show notes
View
build/bin/create.sh
#!/bin/bash ## 权限问题,用 chmod u+x *.sh ## eg: ## cd /mobileproject/$1/XcxProject hivui create $1 if [ $# != 3 ] ; then echo "创建项目的参数不正确,请输入(用户ID,项目名,预览端口)" exit 1 fi # basePath='/opt/eap5/desktop' basePath='/eap5.0/desktop' tagPath=$basePath'/preview' # tmpPath=$basePath'/project-template' tmpPath='/eap5.0/hiruntime/project/desktop/project-template' workName=$1 projectName=$2 port=$3 source[0]='\t<% if(htmlWebpackPlugin.vite){%>\n\t<!--预览时 公共库-->' source[1]='\n\t<script src="\/'$projectName'\/setting\/desktop\/appsetting\/js\/1.0.0\/appsetting.js" type="text\/javascript"><\/script>' source[2]='\n\t<%}%>' source[3]='\n\t<% if(!htmlWebpackPlugin.vite){%>\n\t<!--发布时 公共库-->' source[4]='\n\t<script src="\/${serverName}\/render\/'$projectName'\/setting\/desktop\/appsetting\/js\/1.0.0\/appsetting.js" type="text\/javascript"><\/script>' source[5]='\n\t<%}%>\n' # echo 's/<\/head>/'${source[*]}'<\/head>/g' # exit 1; ## 参数 工号$1 项目名$2 端口$3 ## 工号=工作空间 ## 1、判断工作空间 没有就创建 if [ ! -d "${tagPath}/${workName}" ];then mkdir "${tagPath}/${workName}" fi ## 2、判断项目名 if [ -d "${tagPath}/${workName}/${projectName}" ];then ## 项目名存在,退出 echo "项目名存在" exit 1 fi echo "下载模板中..." ## 3、下载模板 ,如果很多用户同时下载到同一目录 git clone http://192.168.4.105:8080/gitbucket/git/08335/hivui-platform-template.git "${tagPath}/${workName}/${projectName}/deploy" ## 复制 node_modules echo "环境配置中..." cp -rf ${tmpPath}/node_modules ${tagPath}/${workName}/${projectName}/deploy/node_modules cd ${tagPath}/${workName}/${projectName}/deploy/ ## 重命名 mv project ${projectName} rm -r -f oldPackage build/oldWebpack ## 替换 .env.development 的 name 值 sed -i 's#\(VITE_APP_PN \?= \?\).*#\1'"${projectName}/${workName}"'#g' .env.development ## 替换 package.json 的 name 值 author值 ,打包时候输出静态地址是这个 sed -i 's#\("name": \?"\).*#\1'"${projectName}"'",#g' package.json sed -i 's#\("author": \?"\).*#\1'"${workName}"'",#g' package.json ## 替换 processes.json 的 args 值 sed -i '4s#\("name": \?"\).*#\1'"vite-${workName}-${projectName}"'",#g' processes.json sed -i '7s#\("args": \?"\).*#\1'"--host --port ${port}"'",#g' processes.json cd ${tagPath}/${workName}/${projectName}/deploy/${projectName}/hivuiLogin sed -i 's/<\/head>/'"${source[*]}"'<\/head>/g' index.html cd ${tagPath}/${workName}/${projectName}/deploy/${projectName}/hivuiMain sed -i 's/<\/head>/'"${source[*]}"'<\/head>/g' index.html cd ${tagPath}/${workName}/${projectName}/deploy/${projectName}/setting/desktop/appsetting/js/1.0.0 sed -i 's#\(projectName \?= \?\).*#\1"'"${projectName}"'";#g' appsetting.js ## 返回预览目录 cd ${tagPath}/${workName}/${projectName}/deploy ### 启动 用yarn 可以把 --host --port 带入 script dev ## yarn run dev --host --port $port echo "正在启动服务..." npm run pm2:start
#!/bin/bash ## 权限问题,用 chmod u+x *.sh ## eg: ## cd /mobileproject/$1/XcxProject hivui create $1 if [ $# != 3 ] ; then echo "创建项目的参数不正确,请输入(用户ID,项目名,预览端口)" exit 1 fi # basePath='/opt/eap5/desktop' basePath='/eap5.0/desktop' tagPath=$basePath'/preview' # tmpPath=$basePath'/project-template' tmpPath='/eap5.0/hiruntime/project/desktop/project-template' workName=$1 projectName=$2 port=$3 source[0]='\t<% if(htmlWebpackPlugin.vite){%>\n\t<!--预览时 公共库-->' source[1]='\n\t<script src="\/'$projectName'\/setting\/desktop\/appsetting\/js\/1.0.0\/appsetting.js" type="text\/javascript"><\/script>' source[2]='\n\t<%}%>' source[3]='\n\t<% if(!htmlWebpackPlugin.vite){%>\n\t<!--发布时 公共库-->' source[4]='\n\t<script src="\/${serverName}\/render\/'$projectName'\/setting\/desktop\/appsetting\/js\/1.0.0\/appsetting.js" type="text\/javascript"><\/script>' source[5]='\n\t<%}%>\n' # echo 's/<\/head>/'${source[*]}'<\/head>/g' # exit 1; ## 参数 工号$1 项目名$2 端口$3 ## 工号=工作空间 ## 1、判断工作空间 没有就创建 if [ ! -d "${tagPath}/${workName}" ];then mkdir "${tagPath}/${workName}" fi ## 2、判断项目名 if [ -d "${tagPath}/${workName}/${projectName}" ];then ## 项目名存在,退出 echo "项目名存在" exit 1 fi echo "下载模板中..." ## 3、下载模板 ,如果很多用户同时下载到同一目录 git clone http://192.168.4.105:8080/gitbucket/git/08335/hivui-platform-template.git "${tagPath}/${workName}/${projectName}/deploy" ## 复制 node_modules echo "环境配置中..." cp -rf ${tmpPath}/node_modules ${tagPath}/${workName}/${projectName}/deploy/node_modules cd ${tagPath}/${workName}/${projectName}/deploy/ ## 重命名 mv project ${projectName} rm -r -f oldPackage build/oldWebpack ## 替换 .env.development 的 name 值 sed -i 's#\(VITE_APP_PN \?= \?\).*#\1'"${projectName}/${workName}"'#g' .env.development ## 替换 package.json 的 name 值 sed -i 's#\("name": \?"\).*#\1'"${projectName}"'",#g' package.json ## 替换 processes.json 的 args 值 sed -i '4s#\("name": \?"\).*#\1'"vite-${workName}-${projectName}"'",#g' processes.json sed -i '7s#\("args": \?"\).*#\1'"--host --port ${port}"'",#g' processes.json cd ${tagPath}/${workName}/${projectName}/deploy/${projectName}/hivuiLogin sed -i 's/<\/head>/'"${source[*]}"'<\/head>/g' index.html cd ${tagPath}/${workName}/${projectName}/deploy/${projectName}/hivuiMain sed -i 's/<\/head>/'"${source[*]}"'<\/head>/g' index.html cd ${tagPath}/${workName}/${projectName}/deploy/${projectName}/setting/desktop/appsetting/js/1.0.0 sed -i 's#\(projectName \?= \?\).*#\1"'"${projectName}"'";#g' appsetting.js ## 返回预览目录 cd ${tagPath}/${workName}/${projectName}/deploy ### 启动 用yarn 可以把 --host --port 带入 script dev ## yarn run dev --host --port $port echo "正在启动服务..." npm run pm2:start
Ignore Space
Show notes
View
build/webpack.config.js
'use strict' process.env.NODE_ENV = 'production' require('./check-versions')() const fs = require("fs") const chalk = require('chalk') const { merge } = require('webpack-merge'); // 用来记录当前打包的模块路径列表,判断进程参数 let moduleList = (process.argv[2] || "").replace(/\s*$/g, "") if (moduleList == "") { moduleList = require('./module-conf').moduleList || [] } else { moduleList = moduleList.split(',') } // 如果有传参时,对传入的参数进行检测,如果参数非法,那么停止打包操作 const checkModule = require('./module-conf').checkModule for (let i = moduleList.length - 1; i >= 0; i--) { if (!checkModule(moduleList[i])) { return } } const path = require('path') // const ora = require('ora') const rm = require('rimraf') const webpack = require('webpack') const HtmlWebpackPlugin = require('html-webpack-plugin') const webpackConfig = require('./webpack.base.conf') let webpackList = [], rmList = []; const packageConfig = require('../package.json') //删除文件 function getRm(pathStr) { return new Promise((resolve, reject) => { rm(pathStr, err => { if (err) { reject(pathStr + 'del failed!!'); throw err; } resolve(); }); }).then(res => { //console.log(res) }); } //构建webpack 配置 for (let i = moduleList.length - 1; i >= 0; i--) { let MODULE = moduleList[i]; //构建时要删除的模块目录 rmList.push(getRm(path.resolve(__dirname, '../dist', MODULE))); //添加每个模块的webpack 配置 let MODULE_NAME = MODULE.split('/').pop(); let entry = {}; entry[MODULE_NAME] = `${MODULE}/index.js`; // console.log(`/e5/${MODULE.replace('./','')}`); let wpk = merge({}, webpackConfig, { entry: entry, output: { path: path.resolve(__dirname, '../dist', MODULE), // filename: 'static/js/[name].[contenthash:10].js' // publicPath:`/e5/render/${MODULE.replace('./','')}` publicPath:`/e5/render/${packageConfig.author}/${MODULE.replace('./','')}` } }); let htmlTemplate = `${MODULE}/index.html` var checkPath = fs.existsSync(htmlTemplate); //如果目录存在 返回 true ,如果目录不存在 返回false if (checkPath == false) { htmlTemplate = path.resolve(__dirname, '../index.html') } wpk.plugins.push( new HtmlWebpackPlugin({ filename: path.resolve(__dirname, '../dist', MODULE, 'index.html'), template: htmlTemplate,//如果html 不存在考虑用全局根目录下 inject: true, // 这里要指定把哪些chunks追加到html中,默认会把所有入口的chunks追加到html中,这样是不行的 // chunks: ['vendor', 'manifest', 'elementUI','app','hiui', MODULE_NAME], minify: { removeComments: true,//去除注释 collapseWhitespace: true,//是否去除空格 removeAttributeQuotes: true//去除空属性 }, compile: true })) webpackList.push(wpk); } module.exports = webpackList;
'use strict' process.env.NODE_ENV = 'production' require('./check-versions')() const fs = require("fs") const chalk = require('chalk') const { merge } = require('webpack-merge'); // 用来记录当前打包的模块路径列表,判断进程参数 let moduleList = (process.argv[2] || "").replace(/\s*$/g, "") if (moduleList == "") { moduleList = require('./module-conf').moduleList || [] } else { moduleList = moduleList.split(',') } // 如果有传参时,对传入的参数进行检测,如果参数非法,那么停止打包操作 const checkModule = require('./module-conf').checkModule for (let i = moduleList.length - 1; i >= 0; i--) { if (!checkModule(moduleList[i])) { return } } const path = require('path') // const ora = require('ora') const rm = require('rimraf') const webpack = require('webpack') const HtmlWebpackPlugin = require('html-webpack-plugin') const webpackConfig = require('./webpack.base.conf') let webpackList = [], rmList = []; //删除文件 function getRm(pathStr) { return new Promise((resolve, reject) => { rm(pathStr, err => { if (err) { reject(pathStr + 'del failed!!'); throw err; } resolve(); }); }).then(res => { //console.log(res) }); } //构建webpack 配置 for (let i = moduleList.length - 1; i >= 0; i--) { let MODULE = moduleList[i]; //构建时要删除的模块目录 rmList.push(getRm(path.resolve(__dirname, '../dist', MODULE))); //添加每个模块的webpack 配置 let MODULE_NAME = MODULE.split('/').pop(); let entry = {}; entry[MODULE_NAME] = `${MODULE}/index.js`; // console.log(`/e5/${MODULE.replace('./','')}`); let wpk = merge({}, webpackConfig, { entry: entry, output: { path: path.resolve(__dirname, '../dist', MODULE), // filename: 'static/js/[name].[contenthash:10].js' publicPath:`/e5/render/${MODULE.replace('./','')}` } }); let htmlTemplate = `${MODULE}/index.html` var checkPath = fs.existsSync(htmlTemplate); //如果目录存在 返回 true ,如果目录不存在 返回false if (checkPath == false) { htmlTemplate = path.resolve(__dirname, '../index.html') } wpk.plugins.push( new HtmlWebpackPlugin({ filename: path.resolve(__dirname, '../dist', MODULE, 'index.html'), template: htmlTemplate,//如果html 不存在考虑用全局根目录下 inject: true, // 这里要指定把哪些chunks追加到html中,默认会把所有入口的chunks追加到html中,这样是不行的 // chunks: ['vendor', 'manifest', 'elementUI','app','hiui', MODULE_NAME], minify: { removeComments: true,//去除注释 collapseWhitespace: true,//是否去除空格 removeAttributeQuotes: true//去除空属性 }, compile: true })) webpackList.push(wpk); } module.exports = webpackList;
Show line notes below