uniapp区分H5下的不同环境打包

3,308 阅读2分钟

在使用uniapp做跨端开发时,需要对不同的app做单点登录,

第一种情况:

例如同一套代码部署在不同服务器下,但是有不同的H5,比如说App1下需要一套h5代码,App2下需要部署另一套h5代码,由于uniapp下没有对不同的H5做区分,所以我们需要新建命令来区分不同的h5,并在代码中做区分。

1.在package.json中新增配置

    "scripts": {
      "h5-and": {
        "title": "and-H5",
        "BROWSER": "Chrome",
        "env": {
          "UNI_PLATFORM": "h5",
          "tenant": "dandian"
        },
        "define": {
          "H5-AND": true
        }
      },
      "h5-wst": {
        "title": "wst-H5",
        "BROWSER": "Chrome",
        "env": {
          "UNI_PLATFORM": "h5",
          "tenant": "dandian"
        },
        "define": {
          "H5-WST": true
        }
      }
    }
  }

2.在package.json中配置命令,将刚刚新增的配置分别设置打包和运行的命令

"dev:h5-and": "cross-env NODE_ENV=development uniapp-cli custom h5-and",
"dev:h5-wst": "cross-env NODE_ENV=development uniapp-cli custom h5-wst",
"build:h5-and": "cross-env NODE_ENV=production uniapp-cli custom h5-and",
"build:h5-wst": "cross-env NODE_ENV=production uniapp-cli custom h5-wst",

3.在代码中使用添加的条件编译

//#ifdef H5-AND
  params.type = "AND";
//#endif
//#ifdef H5-WST
  params.type = "WST";
//#endif

4.配置好之后,在打包和运行项目时可以看到新增的命令

image.png

image.png

第二种情况:

同一套代码需要部署到相同的服务器下的不同目录(区分测试环境和正式环境),这时我们在打包之后的代码就需要在不同的目录下

image.png 上面的base就是我们打包后的文件目录配置,比如说我们的测试环境为服务器下的h4目录,正式为h5目录,那么每次打包的时候都需要手动改变这个base值,再npm run build:h5 解决办法:在执行打包命令时先更改这个base值,

image.png

image.png changeBase.js就是用来修改base值的文件,放在根目录下 执行npm run build:h4,查看打包后的文件路径

image.png 可以看到base值已经改成h4了 image.png 可以看到打包后的资源在h4的目录下 image.png

第三种情况: 同一套代码部署到同一个服务器下的同一个目录,这种情况在进入网页时,在链接上拼一个参数用来标识平台

image.png