动态获取 微信小程序appid / 自定义启动命令

这篇具有很好参考价值的文章主要介绍了动态获取 微信小程序appid / 自定义启动命令。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

官网:https://uniapp.dcloud.net.cn/collocation/package.html#%E7%94%A8%E6%B3%95
小程序开发完成之后需要一套代码多个小程序使用,每次都需要在manifest.json文件中手动修改,大大增加了开发的复杂度。

官网:https://uniapp.dcloud.net.cn/collocation/package.html#%E7%94%A8%E6%B3%95
小程序开发完成之后需要一套代码多个小程序使用,每次都需要在manifest.json文件中手动修改,大大增加了开发的复杂度,动态获取appid,便于维护小程序数据。

一、修改 package.json 扩展配置

 "uni-app": {
    "scripts": {
      "fbl": {
        "title": "赋百龄",
        "env": {
          "UNI_PLATFORM": "mp-weixin",
          "ENV_TYPE": "fbl"
        },
        "define": {
          "MP-WEIXIN": true
        }
      },
      "wlsc": {
        "title": "无量商城",
        "env": {
          "UNI_PLATFORM": "mp-weixin",
          "ENV_TYPE": "wlsc"
        },
        "define": {
          "MP-WEIXIN": true
        }
      }
    }
  },

补充:

{
    /**
     * package.json其它原有配置 
     * 拷贝代码后请去掉注释!
     */
    "uni-app": {// 扩展配置
        "scripts": {
            "custom-platform": { //自定义编译平台配置,可通过cli方式调用
                "title":"自定义扩展名称", // 在HBuilderX中会显示在 运行/发行 菜单中
                "browser":"",  //运行到的目标浏览器,仅当UNI_PLATFORM为h5时有效
                "env": {//环境变量
                    "UNI_PLATFORM": "",  //基准平台
                    "MY_TEST": "", // ... 其他自定义环境变量
                 },
                "define": { //自定义条件编译
                    "CUSTOM-CONST": true //自定义条件编译常量,建议为大写
                }
            }
        }    
    }
}

Tips: ●
UNI_PLATFORM仅支持填写uni-app默认支持的基准平台,目前仅限如下枚举值:h5、mp-weixin、mp-alipay、mp-baidu、mp-toutiao、mp-qq
● browser
仅在UNI_PLATFORM为h5时有效,目前仅限如下枚举值:chrome、firefox、ie、edge、safari、hbuilderx
● package.json文件中不允许出现注释,否则扩展配置无效 ● vue-cli 需更新到最新版,HBuilderX需升级到
2.1.6+ 版本

二、根目录创建config/env.ts 文件

type EnvConfigType = {
  appid: string
  appName: string
  appLogoUrl: string
}
// 翻倍了
const fbl: EnvConfigType = {
  appid: 'wx123cbb5e',
  appName: '翻倍了',
}

// 为了生存
const wlsc: EnvConfigType = {
  appid: 'wxd4573',
  appName: '为了生存',
}

// 注意:这里的属性名要和上面package.json中定义的扩展节点编译名称相同
const ENV_CONFIG = {
  fbl,
  wlsc,
}

module.exports = ENV_CONFIG

三、 vite.config.ts 配置文件,修改appid

import { defineConfig } from 'vite'
import VueTypeImports from 'vite-plugin-vue-type-imports'
import uni from '@dcloudio/vite-plugin-uni'

// 导入fs模块
const fs = require('fs')
// 导入环境变量配置文件
const ENV_CONFIG = require('./config/env.ts')
const manifestPath = `${__dirname}/src/manifest.json` // 注意一下自己配置的 manifestPath 是否正确
let Manifest = fs.readFileSync(manifestPath, {
  encoding: 'utf-8',
})
function replaceManifest(path: string, value: string) {
  const arr = path.split('.')
  const len = arr.length
  const lastItem = arr[len - 1]

  let i = 0
  const 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 ENV_TYPE = JSON.parse(process.env.UNI_CUSTOM_DEFINE)['ENV_TYPE'] // 打印出来是否正确
// 读取环境变量内容
const appid = ENV_CONFIG[ENV_TYPE].appid
if (appid) {
  replaceManifest('mp-weixin.appid', `"${appid}"`)
}
fs.writeFileSync(manifestPath, Manifest, { flag: 'w' })

// https://vitejs.dev/config/
export default defineConfig({
  build: {
    // 开发阶段启用源码映射:https://uniapp.dcloud.net.cn/tutorial/migration-to-vue3.html#需主动开启-sourcemap
    sourcemap: process.env.NODE_ENV === 'development',
  },
  plugins: [uni(), VueTypeImports()],
})

四、运行及发布项目

1、启动命令

vue-cli开发者可通过如下命令,启动钉钉小程序平台的编译

运行项目

npm run dev:custom fbl 
npm run dev:custom wlsc  

发布项目

npm run build:custom fbl
npm run build:custom wlsc 

HBuilderX会根据package.json的扩展配置,在运行、发行菜单下,生成自定义菜单(钉钉小程序),开发者点击对应菜单编译运行即可,如下图:
动态获取 微信小程序appid / 自定义启动命令,uni-app,微信小程序,appid,uniapp,vue3
动态获取 微信小程序appid / 自定义启动命令,uni-app,微信小程序,appid,uniapp,vue3
动态获取 微信小程序appid / 自定义启动命令,uni-app,微信小程序,appid,uniapp,vue3动态获取 微信小程序appid / 自定义启动命令,uni-app,微信小程序,appid,uniapp,vue3

2、修改启动命令

动态获取 微信小程序appid / 自定义启动命令,uni-app,微信小程序,appid,uniapp,vue3

添加指令

    "dev:mp-fbl": "uni -p fbl",
    "dev:mp-wlsc": "uni -p wlsc",
    
    "build:mp-fbl": "uni -p fbl",
    "build:mp-wlsc": "uni -p wlsc",

启动打包命令:

# 启动
npm run dev:mp-fbl
npm run dev:mp-wlsc
# 打包
npm run build:mp-fbl
npm run build:mp-wlsc

五、获取自定义环境配置的信息

可以在 vite.config.ts 文件中,添加 define 共享选项 。

1、vite 的 define 共享选项

动态获取 微信小程序appid / 自定义启动命令,uni-app,微信小程序,appid,uniapp,vue3

2、配置共享选项

我们可以将处理好的当前微信小程序环境配置信息,放到共享选项中的常量中,修改vite.config.ts文件。

import { defineConfig } from 'vite'
import VueTypeImports from 'vite-plugin-vue-type-imports'
import uni from '@dcloudio/vite-plugin-uni'

// 导入fs模块
const fs = require('fs')
// 导入环境变量配置文件
const ENV_CONFIG = require('./config/env.ts')
const manifestPath = `${__dirname}/src/manifest.json`
let Manifest = fs.readFileSync(manifestPath, {
  encoding: 'utf-8',
})
function replaceManifest(path: string, value: string) {
  const arr = path.split('.')
  const len = arr.length
  const lastItem = arr[len - 1]

  let i = 0
  const 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 ENV_TYPE = JSON.parse(process.env.UNI_CUSTOM_DEFINE)['ENV_TYPE']
// 读取环境变量内容
const appid = ENV_CONFIG[ENV_TYPE].appid
if (appid) {
  replaceManifest('mp-weixin.appid', `"${appid}"`)
}
fs.writeFileSync(manifestPath, Manifest, { flag: 'w' })
console.log(ENV_CONFIG[ENV_TYPE])
// https://vitejs.dev/config/
export default defineConfig({
  build: {
    // 开发阶段启用源码映射:https://uniapp.dcloud.net.cn/tutorial/migration-to-vue3.html#需主动开启-sourcemap
    sourcemap: process.env.NODE_ENV === 'development',
  },
  plugins: [uni(), VueTypeImports()],
  // 定义全局常量替换方式。其中每项在开发环境下会被定义在全局,而在构建时被静态替换。
  define: {
    _PROCESS_ENV_APP_INFO: ENV_CONFIG[ENV_TYPE],
  },
})

3、页面获取自定义环境配置信息

打开App.vue文件,在 onShow 里面去执行仓储的赋值。

1)仓储创建
import { defineStore } from 'pinia'

export const useAppInfoStore = defineStore('appInfo', () => {
  const appInfo = ref<{ appid: string, appName: string, appLogoUrl: string }>(uni.getStorageSync('_appInfo'))
  // 获取缓存小程序自定义环境配置信息
  const setAppInfo = (appData: { appid: string; appName: string; appLogoUrl: string }) => {
    appInfo.value = appData
    uni.setStorage({
      key: '_appInfo',
      data: appData,
    })
  }
  return { setAppInfo, appInfo }
})
2)在App.vue文件中执行赋值操作
<script setup lang="ts">
  import { onLaunch, onShow, onHide } from '@dcloudio/uni-app'
  import { useThemesStore, useAppInfoStore } from '@/stores'

  const themesStore = useThemesStore()
  const appInfoStore = useAppInfoStore()

  onLaunch(() => {
    console.log('App Launch')
  })
  onShow(() => {
    console.log('App Show', getCurrentPages())
    themesStore.actionThemeCfg() // 执行仓储赋值
    appInfoStore.setAppInfo(_PROCESS_ENV_APP_INFO) // 设置app信息
  })
  
  onHide(() => {
    console.log('App Hide')
  })

  // #ifndef MP-WEIXIN
  // 隐藏原生的底部tabbar
  uni.hideTabBar()
  // #endif
</script>

<style lang="scss">
</style>

取值:文章来源地址https://www.toymoban.com/news/detail-834131.html

import { useAppInfoStore } from '@/stores'
const { appInfo } = useAppInfoStore()

 <image
   v-if="appInfo.appLogoUrl"
    class="app-logo"
    mode="heightFix"
    :src="appInfo.appLogoUrl"
  />
  <text v-else>{{ appInfo.appName }}</text>

到了这里,关于动态获取 微信小程序appid / 自定义启动命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序的AppID在哪?

    第一步打开百度,搜索微信小程序,进去官网,如下图所示 第二步进去之后,登录微信小程序的账号,需要注意的是小程序的账号和公众号账号不一样,如果没有的话,需要重新注册微信小程序账号,如下图所示: 第三步进去小程序后台之后,点击开发,如下图所示: 第四

    2024年02月12日
    浏览(41)
  • 【微信小程序 | 实战开发】配置微信小程序APPID并快速接入

    你是否想要掌握人工智能的最新技术和应用?你是否想要成为未来社会的创新者和领导者?你是否想要和全球的优秀导师和同学一起学习和交流?如果你的答案是肯定的,那么欢迎来到床长人工智能教程网站,这里是你实现梦想的起点! 个人名片: 🐼 作者简介:一名大一在

    2024年01月24日
    浏览(46)
  • 七、微信小程序运行报错:Error: AppID 不合法,invalid appid

    运行报错:Error: AppID 不合法,invalid appid ———————————————————————————或——————————————————————————— 微信开发者工具控制台报错:TypeError: First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object. 解决:在

    2023年04月09日
    浏览(68)
  • 微信小程序——运行他人的项目、寻找appid

    如果想要运行他人写好的微信小程序且规避一些报错的的话,如何实现? 1.导入项目 2.修改appid 首先找到 project.config.json 文件里面的 appid ,然后将appid改为自己小程序的 appid 即可。 自己的appid在哪里找? 1.进入微信公众平台https://mp.weixin.qq.com/ 2.有账号的扫码登录,没账号的

    2024年02月14日
    浏览(38)
  • 查看微信小程序的原始账号ID和AppId

    略 打开一个小程序,进入小程序后点击右上角 三个点 点击小程序的名字 点击更多资料 更多资料中出现原始账号ID和AppId 打开一个小程序,进入小程序后点击右上角 三个点 点击添加到桌面 回到桌面,找到图标点击右键,在右键菜单中点击属性 属性中出现AppId s s s

    2024年02月13日
    浏览(132)
  • uni-app微信小程序报错:更改appid失败touristappid Error:tourist appid

    最开始是使用的测试账号。后面想改成实际账号。结果就报错了。 这个appid一定要是正确的才能上传代码。之前我都没注意。一直点提交都是失败的。后面才想到appid不对。 我在2个地方操作都是错的(正确的方法在后面,这里可以跳过不看): 1,最开始我在微信开发者工具

    2024年02月11日
    浏览(29)
  • 【微信小程序入门到精通】— AppID和个性配置你学会了么?

    对于目前形式,微信小程序是一个热门,那么我们该如何去学习并且掌握之后去做实际项目呢? 为此我特意开设此专栏,在我学习的同时也将其分享给大家! 微信小程序官方文档可以点击下方链接查询: 小程序组件参考文档 小程序API参考文档 小程序服务端API参考文档 如果

    2024年01月19日
    浏览(41)
  • 微信小程序在哪里看自己的appId 和 Secret 如何查看

    微信公众平台 - 传送门

    2024年02月11日
    浏览(52)
  • 解决微信小程序dom的获取问题,动态修改CSS样式

    哥们儿用UNIAPP开发微信小程序的过程中,遇到这么一个组件 这是插件市场中的一个案例,作者使用的进度条是vant的Circle 环形进度条 哥们儿开心的很呀,这东西粘贴一下改改数,一天的工作量不就达成了吗? 但是因为种种原因,我还是太高估自己了,vant引入不进去! 还好哥

    2024年02月05日
    浏览(36)
  • 微信小程序自定义组件boundingClientRect获取到的rect值为null

    const query = wx.createSelectorQuery().in(this) 这一句是最重要的,要用.in(this),this传入的是自定义组件的实例。 不然获取到的rect值为null

    2024年02月13日
    浏览(23)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包