diff --git a/uni-app/package.json b/uni-app/package.json index 51e0bbe23..c8742b8cb 100644 --- a/uni-app/package.json +++ b/uni-app/package.json @@ -15,7 +15,8 @@ "dev:mp-lark": "uni -p mp-lark", "dev:mp-qq": "uni -p mp-qq", "dev:mp-toutiao": "uni -p mp-toutiao", - "dev:mp-weixin": "uni -p mp-weixin", + "dev:mp-weixin": "node publish.cjs mp-weixin dev", + "dev:niu-mp-weixin": "uni -p mp-weixin", "dev:quickapp-webview": "uni -p quickapp-webview", "dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei", "dev:quickapp-webview-union": "uni -p quickapp-webview-union", @@ -23,7 +24,7 @@ "build:app-android": "uni build -p app-android", "build:app-ios": "uni build -p app-ios", "build:custom": "uni build -p", - "build:h5": "uni build && node publish.cjs", + "build:h5": "uni build && node publish.cjs h5 build", "build:h5:ssr": "uni build --ssr", "build:mp-alipay": "uni build -p mp-alipay", "build:mp-baidu": "uni build -p mp-baidu", @@ -32,7 +33,7 @@ "build:mp-lark": "uni build -p mp-lark", "build:mp-qq": "uni build -p mp-qq", "build:mp-toutiao": "uni build -p mp-toutiao", - "build:mp-weixin": "uni build -p mp-weixin", + "build:mp-weixin": "uni build -p mp-weixin && node publish.cjs mp-weixin build", "build:quickapp-webview": "uni build -p quickapp-webview", "build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei", "build:quickapp-webview-union": "uni build -p quickapp-webview-union", @@ -82,4 +83,4 @@ "vue-tsc": "^1.0.24", "windicss": "^3.5.6" } -} +} \ No newline at end of file diff --git a/uni-app/publish.cjs b/uni-app/publish.cjs index 7b349b85c..115123a67 100644 --- a/uni-app/publish.cjs +++ b/uni-app/publish.cjs @@ -1,4 +1,26 @@ const fs = require('fs') +const { spawn } = require('child_process'); +const path = require('path'); + +const main = () => { + const params = process.argv.slice(2) || [] + const port = params[0] || '' + const mode = params[1] || '' + + switch (port) { + case 'h5': + publish() + break; + case 'mp-weixin': + if (mode == 'build') { + handleWeappAddonComponents(mode) + handleWeappLanguage(mode) + } else if (mode == 'dev') { + listenWeappRunDev() + } + break; + } +} const publish = () => { const src = './dist/build/h5' @@ -48,4 +70,51 @@ const solve = () => { }) } -publish() +const handleWeappAddonComponents = (mode) => { + const src = `./dist/${mode}/mp-weixin/addon/components/diy/group/index.json` + + try { + const data = JSON.parse(fs.readFileSync(src, 'utf8')); + data.componentPlaceholder = {}; + + Object.keys(data.usingComponents).map(key => { + data.componentPlaceholder[key] = "view"; + }) + fs.writeFileSync(src, JSON.stringify(data)) + } catch (err) { + } +} + +const handleWeappLanguage = (mode) => { + const src = `./dist/${mode}/mp-weixin/locale/language.js` + + try { + let content = fs.readFileSync(src, 'utf8'); + content = content.replace(/Promise\.resolve\(require\(("[^"]+")\)\)/g, 'require.async($1)') + fs.writeFileSync(src, content) + } catch (err) { + console.log(err) + } +} + +const listenWeappRunDev = () => { + const devProcess = spawn('npm', ['run', 'dev:niu-mp-weixin'], { + stdio: ['pipe', 'pipe', 'pipe'], + shell: true + }); + + let serverReady = false; + + // 监听 stdout 输出 + devProcess.stdout.on('data', (data) => { + const message = data.toString(); + console.log(message) + if (!serverReady && message.includes('DONE Build complete')) { + serverReady = true; + handleWeappAddonComponents('dev') + handleWeappLanguage('dev') + } + }); +} + +main()