当前位置:   article > 正文

uni-app动态修改manifest.json中的参数_uniapp manifest.json

uniapp manifest.json

以根据不同环境配置不同的h5运行路径为例,动态修改h5.router.base

 

假设当前有三种环境

  1. process.env.NODE_ENV === 'development'
  2. process.env.NODE_ENV === 'test'
  3. process.env.NODE_ENV === 'production'


在src根目录下创建modifyManifest.js文件(一定是src)

文件内容如下:

  1. const fs = require('fs')
  2. //此处如果是用HBuilderX创建的项目manifest.json文件在项目跟目录,如果是 cli 创建的则在 src 下,这里要注意
  3. //process.env.UNI_INPUT_DIR为项目所在的绝对路径,经测试,相对路径会找不到文件
  4. const manifestPath = process.env.UNI_INPUT_DIR + '/manifest.json'
  5. let Manifest = fs.readFileSync(manifestPath, { encoding: 'utf-8' })
  6. function replaceManifest(path, value) {
  7. const arr = path.split('.')
  8. const len = arr.length
  9. const lastItem = arr[len - 1]
  10. let i = 0
  11. let ManifestArr = Manifest.split(/\n/)
  12. for (let index = 0; index < ManifestArr.length; index++) {
  13. const item = ManifestArr[index]
  14. if (new RegExp(`"${arr[i]}"`).test(item)) ++i;
  15. if (i === len) {
  16. const hasComma = /,/.test(item)
  17. ManifestArr[index] = item.replace(new RegExp(`"${lastItem}"[\\s\\S]*:[\\s\\S]*`), `"${lastItem}": ${value}${hasComma ? ',' : ''}`)
  18. break;
  19. }
  20. }
  21. Manifest = ManifestArr.join('\n')
  22. }
  23. //动态配置 h5.router.base ,这部分的代码可根据自己的需要写,需要改什么,按照manifest.json对应的路径写好即可
  24. if (process.env.NODE_ENV === 'production') {
  25. replaceManifest('h5.router.base', '"/game"')
  26. }
  27. else if (process.env.NODE_ENV === 'test') {
  28. replaceManifest('h5.router.base', '"/test/game"')
  29. }
  30. else if (process.env.NODE_ENV === 'development') {
  31. replaceManifest('h5.router.base', '"/dev/game"')
  32. }
  33. fs.writeFileSync(manifestPath, Manifest, {
  34. "flag": "w"
  35. })

然后在vue.confing.js中引入这个文件,没有这个文件可以自己新建,新建在项目的根目录即可。

vue.config.js内容如下

let a = require('./src/modifyManifest')//我看别人介绍的是用的import,我这里用import报错,改成了require,引入对应的文件即可。

补充:针对于为什么这里用了require而不是import请参考文章:https://segmentfault.com/a/1190000042432407?utm_source=sf-hot-article​​​​​​​ 

项目目录如下

 按照上述方法,经过测试,不管是本地运行不同环境,还是build不同环境的包,皆可自动修改manifest.json中h5对应的不同基础路径

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/273917?site
推荐阅读