首先一个基础分包方案:
包不用区分渠道,只是通过文件名进行区分,公共代码逻辑可以通过mixins进行混入。
这样分包后就需要在打包时只针对编译的渠道包文件进行替换打包,其他渠道包的文件不打包进去,通过工具类实现替换。
项目主目录下的manifest.json 和 pages.json 可以是空内容,都是通过工具类将prebuild目录下不同渠道不同平台的对应文件内容复制然后写到项目主目录下去的。
- 先看主要配置文件:
//package.json
{
"name": "demo",
"config": {
"dev": "cross-env NODE_ENV=development uniapp-cli custom",
"pro": "cross-env NODE_ENV=production uniapp-cli custom"
},
"version": "0.1.0",
"private": true,
"scripts": {
"dev:ks-brandA": "cross-env-shell $npm_package_config_dev bd-brandA --minimize",
"dev:tt-brandA": "cross-env-shell $npm_package_config_dev tt-brandA --minimize",
"dev:bd-brandA": "cross-env-shell $npm_package_config_dev ks-brandA --minimize",
"build:bd-brandA": "cross-env-shell $npm_package_config_pro bd-brandA --minimize",
"build:tt-brandA": "cross-env-shell $npm_package_config_pro tt-brandA --minimize",
"build:ks-brandA": "cross-env-shell $npm_package_config_pro ks-brandA --minimize",
"dev:ks-brandB": "cross-env-shell $npm_package_config_dev bd-brandB --minimize",
"dev:tt-brandB": "cross-env-shell $npm_package_config_dev tt-brandB --minimize",
"dev:bd-brandB": "cross-env-shell $npm_package_config_dev ks-brandB --minimize",
"build:bd-brandB": "cross-env-shell $npm_package_config_pro bd-brandB --minimize",
"build:tt-brandB": "cross-env-shell $npm_package_config_pro tt-brandB --minimize",
"build:ks-brandB": "cross-env-shell $npm_package_config_pro ks-brandB --minimize",
},
"dependencies": {
"@dcloudio/uni-app": "^2.0.2-3081220230817001",
"@dcloudio/uni-app-plus": "^2.0.2-3081220230817001",
"@dcloudio/uni-h5": "^2.0.2-3081220230817001",
"@dcloudio/uni-i18n": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-360": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-alipay": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-baidu": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-jd": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-kuaishou": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-lark": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-qq": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-toutiao": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-vue": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-weixin": "^2.0.2-3081220230817001",
"@dcloudio/uni-mp-xhs": "^2.0.2-3081220230817001",
"@dcloudio/uni-quickapp-native": "^2.0.2-3081220230817001",
"@dcloudio/uni-quickapp-webview": "^2.0.2-3081220230817001",
"@dcloudio/uni-stacktracey": "^2.0.2-3081220230817001",
"@dcloudio/uni-stat": "^2.0.2-3081220230817001",
"@dcloudio/uni-ui": "^1.4.28",
"@vue/shared": "^3.0.0",
"core-js": "^3.8.3",
"crypto-js": "^3.1.9-1",
"flyio": "^0.6.2",
"vue": ">= 2.6.14 < 2.7",
"vuex": "^3.2.0"
},
"devDependencies": {
"@dcloudio/types": "^3.3.2",
"@dcloudio/uni-automator": "^2.0.2-3081220230817001",
"@dcloudio/uni-cli-i18n": "^2.0.2-3081220230817001",
"@dcloudio/uni-cli-shared": "^2.0.2-3081220230817001",
"@dcloudio/uni-helper-json": "*",
"@dcloudio/uni-migration": "^2.0.2-3081220230817001",
"@dcloudio/uni-template-compiler": "^2.0.2-3081220230817001",