3***@qq.com
3***@qq.com
  • 发布:2023-03-29 18:45
  • 更新:2023-05-17 09:39
  • 阅读:607

【报Bug】自定义扩展的平台,自定义发行不生效,NODE_ENV一直是"production"

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: macOS Catalina 10.15.7

HBuilderX类型: 正式

HBuilderX版本号: 3.7.9

第三方开发者工具版本号: stable 1.05.2110290

基础库版本号: 2.30.3

项目创建方式: HBuilderX

示例代码:

之后尝试使用cli打包和发布,但结果还是一样,无法改变NODE_ENV的值

"scripts": {  
    "build:cli": "cross-env NODE_ENV=MasterProduction UNI_PLATFORM=mp-weixin node modifyManifest.js&&/Applications/HBuilderX.app/Contents/MacOS/cli publish --platform mp-weixin --project eb-uniapp --appid wx9*****42",  
  }

备注:
上述的 cli命令 不知道是否正确,但是执行起来打包是正常的,只是NODE_ENV还是"production",没有发生改变;
尝试使用 HBuilderX的 win版本(3.7.3),结果还是一样。

预期结果:

希望能使用HBuilderX 的『自定义发行』功能;
如果不能,有无对应的版本可以?(mac版和win版)
如果HBuilderX不行,cli命令是否可以?命令是怎样的

bug描述:

说明:项目分 正式版和测试版,分别部署在2个小程序,使用两个小程序appid,想通过『自定义发行』 发布在不同的小程序上

以下是package.json和modifyManifest.js 的配置

package.json:

{  
  "uni-app": {  
    "scripts": {  
      "wxMaster": {  
        "title": "微信-正式版",  
        "browser": "",  
        "env": {  
          "UNI_PLATFORM": "mp-weixin",  
          "WX-APPID": "wx********42",  
          "NODE_ENV": "MasterProduction",  
          "BASE_URL": ""  
        },  
        "define": {  
          "WX-MASTER": true  
        }  
      }  
    }  
  },  
 "scripts": {  
    "build:cli": "cross-env NODE_ENV=MasterProduction UNI_PLATFORM=mp-weixin node modifyManifest.js&&/Applications/HBuilderX.app/Contents/MacOS/cli publish --platform mp-weixin --project eb-uniapp --appid wx9*****42",  
  }  
}

modifyManifest.js:

// 读取 manifest.json ,修改后重新写入  
const fs = require('fs')  

const manifestPath = `${__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')  
}  

const replaceMan = () => {  
  console.log('->', process.env.NODE_ENV)  
  const appid = process.env.NODE_ENV === 'MasterProduction' ? 'wx********42' : 'wxe****60';  
  // 使用  
  replaceManifest('mp-weixin.appid', `"${appid}"`)  
  fs.writeFileSync(manifestPath, Manifest, {  
    "flag": "w"  
  })  
  // #ifndef WX-MASTER  
  console.log('--- 非正式')  
  // #endif  
  // #ifdef WX-MASTER  
  console.log('--- WX-MASTER正式')  
  // #endif  
  console.log('执行修改 replaceManifest ->', process.env)  
  console.log('执行修改 replaceManifest ->', appid)  
}  

module.exports = replaceMan

但是通过 HBuilderX 的自定义发行(发行 -> 自定义发行 -> "微信-正式版"),NODE_ENV一直都是"production",配置的package.json都没生效。

2023-03-29 18:45 负责人:无 分享
已邀请:
t***@gmail.com

t***@gmail.com

我也有这个问题,楼主解决了吗

要回复问题请先登录注册