1
xuxueyang
2024-07-15 e4bb10264e289d376ed5d938c59b0fdbb1d41d6b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
const fs = require('fs')
//此处如果是用HBuilderX创建的项目manifest.json文件在项目跟目录,如果是 cli 创建的则在 src 下,这里要注意
//process.env.UNI_INPUT_DIR为项目所在的绝对路径,经测试,相对路径会找不到文件
const manifestPath = process.env.UNI_INPUT_DIR + '/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')
}
//动态配置 h5.router.base ,这部分的代码可根据自己的需要写,需要改什么,按照manifest.json对应的路径写好即可
if (process.env.NODE_ENV === 'production') {
replaceManifest('h5.router.base', '"/game"')
else if (process.env.NODE_ENV === 'test') { 
replaceManifest('h5.router.base', '"/test/game"') 
}
else if (process.env.NODE_ENV === 'development') { 
replaceManifest('h5.router.base', '"/dev/game"') 
}
 
 
 
fs.writeFileSync(manifestPath, Manifest, {
  "flag": "w"
})