init
This commit is contained in:
commit
80f0ceb906
53
app_versioning.js
Normal file
53
app_versioning.js
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
const path = require('path')
|
||||||
|
const fs = require('fs')
|
||||||
|
|
||||||
|
// 读取 manifest.json ,修改后重新写入
|
||||||
|
// https://uniapp.dcloud.net.cn/collocation/vue-config.html
|
||||||
|
const manifestPath = path.join(__dirname, 'manifest.json')
|
||||||
|
let Manifest = fs.readFileSync(manifestPath, { encoding: 'utf-8' })
|
||||||
|
function replaceManifest (path, value) {
|
||||||
|
const arr = path.split('.')
|
||||||
|
const len = arr.length
|
||||||
|
const lastItem = arr[len - 1]
|
||||||
|
let i = 0
|
||||||
|
let ManifestArr = Manifest.split(/\n/)
|
||||||
|
for (let index = 0; index < ManifestArr.length; index++) {
|
||||||
|
const item = ManifestArr[index]
|
||||||
|
if (new RegExp(`"${arr[i]}"`).test(item)) ++i
|
||||||
|
if (i === len) {
|
||||||
|
const hasComma = /,/.test(item)
|
||||||
|
ManifestArr[index] = item.replace(
|
||||||
|
new RegExp(`"${lastItem}"[\\s\\S]*:[\\s\\S]*`),
|
||||||
|
`"${lastItem}" : ${value}${hasComma ? ',' : ''}`
|
||||||
|
)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Manifest = ManifestArr.join('\n')
|
||||||
|
}
|
||||||
|
|
||||||
|
// 注意,在调用 vue.config.js 之前,打包进程就已经读取了 manifest,因此嵌入在 vue.config.js 里更新的数据直到再下一次打包时才生效,导致被打包的 uni.getSystemInfoSync().appVersionCode 仍然为之前的版本号。
|
||||||
|
// 为了让打包的版本正确,解决方案 1)在 package.json 里提供一个定时任务,每小时更新一次,但这样仍然可能因为打包和部署发生在两个小时里而出错。
|
||||||
|
// 解决方案 2)通过命令行方式打包+部署一体自动化,即使发生在两个小时里也正确,只要不要在这期间手动或定时的额外更新。
|
||||||
|
const versionCode = new Date()
|
||||||
|
.toJSON()
|
||||||
|
.replace(/:.*/, '')
|
||||||
|
.replace(/[-|T]/g, '')
|
||||||
|
.substring(2)
|
||||||
|
replaceManifest(
|
||||||
|
'versionName',
|
||||||
|
'"' + versionCode.slice(0, 4) + '.' + versionCode.slice(4) + '"'
|
||||||
|
)
|
||||||
|
replaceManifest('versionCode', parseInt(versionCode))
|
||||||
|
// 万一修改了应用的名称,则也修改 manifest:
|
||||||
|
// const callname = require('./store').state.callnames.enUS
|
||||||
|
// replaceManifest('name', `"${callname}"`)
|
||||||
|
// replaceManifest('h5.title', `"${callname}"`)
|
||||||
|
|
||||||
|
fs.writeFileSync(manifestPath, Manifest, { flag: 'w' })
|
||||||
|
|
||||||
|
//fs.writeFileSync(path.join(__dirname, 'versionCode-created.json'), versionCode, { flag: 'w' })
|
||||||
|
//console.log(new Date(), 'versionCode =', versionCode)
|
||||||
|
console.log(versionCode)
|
||||||
|
|
||||||
|
module.exports = versionCode
|
Loading…
Reference in New Issue
Block a user