|
@@ -0,0 +1,65 @@
|
|
|
+import dayjs from 'dayjs'
|
|
|
+import { exec } from 'child_process'
|
|
|
+import semver from 'semver'
|
|
|
+
|
|
|
+import { readFileSync, writeFileSync } from 'fs'
|
|
|
+
|
|
|
+const versionFile = './public/version.json'
|
|
|
+
|
|
|
+main()
|
|
|
+
|
|
|
+/**
|
|
|
+ * 写入json文件
|
|
|
+ * @param {*} version
|
|
|
+ * @param {*} fileDirName
|
|
|
+ */
|
|
|
+function writeJson(version, fileDirName) {
|
|
|
+ try {
|
|
|
+ writeFileSync(fileDirName, JSON.stringify(version, null, 2), { flag: 'w+', encoding: 'utf-8' })
|
|
|
+ console.log(`-> 写入 ${fileDirName} 成功`)
|
|
|
+ } catch (err) {
|
|
|
+ console.error(`-> 写入 ${fileDirName} 失败: `)
|
|
|
+ console.error(err)
|
|
|
+ throw err
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 获取最新的版本号
|
|
|
+ * @returns
|
|
|
+ */
|
|
|
+function getLatestVersion() {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ return exec('git describe --abbrev=0 --tags', (err, version) => {
|
|
|
+ if (err) {
|
|
|
+ reject()
|
|
|
+ console.error('获取版本号失败:', err)
|
|
|
+ } else {
|
|
|
+ console.log('最新版本号:', version)
|
|
|
+ exec('git rev-parse HEAD', (err, hash) => {
|
|
|
+ if (err) {
|
|
|
+ reject()
|
|
|
+ console.error('获取版本号失败:', err)
|
|
|
+ } else {
|
|
|
+ console.log('最新HASH:', hash)
|
|
|
+ resolve({ version: version.trim(), hash: hash.trim() })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+// 主函数
|
|
|
+function main() {
|
|
|
+ getLatestVersion().then(({ version, hash }) => {
|
|
|
+ const content = readFileSync(versionFile, 'utf-8')
|
|
|
+ const packageInfo = JSON.parse(content)
|
|
|
+
|
|
|
+ packageInfo.version = version
|
|
|
+ packageInfo.hash = hash
|
|
|
+ packageInfo.updateTime = dayjs().format('YYYY-MM-DD HH:mm:ss')
|
|
|
+
|
|
|
+ writeJson(packageInfo, versionFile)
|
|
|
+ })
|
|
|
+}
|