2 Star 1 Fork 1

冯凯强/xyol-prov3

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
deploy.mjs 3.77 KB
一键复制 编辑 原始数据 按行查看 历史
#!/usr/bin/env zx
import chalk from 'chalk'
import fs from 'node:fs'
import path from 'node:path'
import { fileURLToPath } from 'node:url'
$.verbose = true // 开启详细提示
const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename)
const fileName = 'assets'
const authKey = '7@.URM;nGS789sg60TV,l5?rK3p04c}utejx9{F:DJQEA12k1IBd34Hyqi5=v.6N'
const rootDir = __dirname
const configs = JSON.parse(fs.readFileSync('package.json', 'utf8'))
const version = configs.version.replace('+', '.')
// 打包文件存放目录
const distPath = `${rootDir}/build/remote-assets`
// 编译文件存放目录
const assetsPath = `${rootDir}/build/android/data`
console.debug(chalk.yellow(`执行编译 ${dateFormat(new Date())}`))
await $`bun run hot:pro`
const isExistAssets = await fs.existsSync(assetsPath)
if (!isExistAssets) {
console.debug(chalk.red('停止运行脚本, 资源编译文件缺失, 请重新构建项目资源!'))
await $`exit 1`
}
const isExistProject = await fs.existsSync(`${rootDir}/assets/project.manifest`)
const isExistVersion = await fs.existsSync(`${rootDir}/assets/version.manifest`)
if (!isExistProject || !isExistVersion) {
console.debug(chalk.red('停止运行脚本, 缺少热更新版本控制文件!'))
await $`exit 1`
}
// 拉取最新远程资源
await $`cd ${distPath} && git pull --rebase`
// 创建打包
if (!(await fs.existsSync(distPath))) await fs.mkdirSync(distPath)
// 清空历史,这里没有使用/*是因为有.git信息不想被删除掉
await $`rm -rf ${distPath}/*.manifest`
await $`rm -rf ${distPath}/src`
await $`rm -rf ${distPath}/jsb-adapter`
await $`rm -rf ${distPath}/assets`
await $`cd assets && cp project.manifest ${distPath}`
await $`cd assets && cp version.manifest ${distPath}`
await $`cp -a -f ${assetsPath}/* ${distPath}/`
await $`rm -rf ${distPath}/*.js`
console.debug(chalk.green('文件编译完成...'))
$.verbose = false // 关闭详细提示
// 检查文件是否有更新
const diff = await $`cd ${distPath} && git add . && git status -s`
$.verbose = true // 开启详细提示
// 没有更新时退出执行
if (diff.stdout.trim() === '') {
console.debug(chalk.yellow('资源没有更新!'))
} else {
// 上传文件
console.debug(chalk.yellow(`执行上传 ${dateFormat(new Date())}`))
await $`cd ${rootDir}/build/remote-assets && git commit -m "v${version}" && git push`
console.debug(chalk.green('文件上传完成...'))
}
// 部署文件
console.debug(chalk.yellow(`执行部署 ${dateFormat(new Date())}`))
const deployRes = await fetch(
`https://www.xyol3.cn/deploy/node/deploy/assets?token=${authKey}&deployFileName=${fileName}`
)
if ((await deployRes.status) !== 200) {
console.debug(chalk.red('上传文件成功,部署项目出错!'))
await $`exit 1`
}
$.verbose = true // 关闭详细提示
console.debug(chalk.green('文件部署成功!'))
function dateFormat(date, fmt = 'yyyy-MM-dd HH:mm:ss') {
var o = {
'd+': date.getDate(),
'H+': date.getHours(),
'M+': date.getMonth() + 1,
'm+': date.getMinutes(),
's+': date.getSeconds(),
'S+': date.getMilliseconds(),
}
//因为date.getFullYear()出来的结果是number类型的,所以为了让结果变成字符串型,下面有两种方法:
if (/(y+)/.test(fmt)) {
//第一种:利用字符串连接符“+”给date.getFullYear()+'',加一个空字符串便可以将number类型转换成字符串。
fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
}
for (var k in o) {
if (new RegExp('(' + k + ')').test(fmt)) {
//第二种:使用String()类型进行强制数据类型转换String(date.getFullYear()),这种更容易理解。
fmt = fmt.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(String(o[k]).length))
}
}
return fmt
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/dh1147050160/xyol-prov3.git
git@gitee.com:dh1147050160/xyol-prov3.git
dh1147050160
xyol-prov3
xyol-prov3
master

搜索帮助