congming_huose-apk/vue.config.js

68 lines
2.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 微信小程序:构建完成后用 pages.json 覆盖写 app.json并清理已删除组件的残留文件
* 避免主包 app.json 被误合并为「仅有 usingComponents、无 pages」。
* HBuilderX 若走 vue-cli 链时会加载本文件;纯内置编译无此文件时,请执行 npm run mp:fix-app-json
*/
const path = require('path')
const fs = require('fs')
const { execFileSync } = require('child_process')
const fixScript = path.join(__dirname, 'scripts', 'fix-mp-app-json.cjs')
/** 从 manifest.json 解析 versionName支持文件内注释 */
function readManifestVersionName() {
const manifestPath = path.join(__dirname, 'manifest.json')
try {
const raw = fs.readFileSync(manifestPath, 'utf8')
const nameMatch = raw.match(/"versionName"\s*:\s*"([^"]+)"/)
if (nameMatch) return nameMatch[1]
} catch (e) {
console.warn('[vue.config] read manifest version:', e && e.message)
}
return '1.0.1'
}
function runFix() {
if (!fs.existsSync(fixScript)) return
try {
execFileSync(process.execPath, [fixScript], { cwd: __dirname, stdio: 'pipe' })
} catch (e) {
// 不打断主构建
}
}
class FixMpWxAppJsonPlugin {
apply(compiler) {
compiler.hooks.done.tap('FixMpWxAppJson', (stats) => {
if (stats && stats.hasErrors && stats.hasErrors()) return
runFix()
})
}
}
module.exports = {
chainWebpack(config) {
try {
if (config && typeof config.plugin === 'function') {
const manifestVersion = readManifestVersionName()
config.plugin('define').tap((definitions) => {
const def = definitions[0] || {}
def['__APP_MANIFEST_VERSION__'] = JSON.stringify(manifestVersion)
definitions[0] = def
return definitions
})
}
} catch (e) {
console.warn('[vue.config] define manifest version:', e && e.message)
}
try {
if (!config || typeof config.plugin !== 'function') return
const name = 'fix-mp-wx-app-json'
if (config.plugins && config.plugins.has && config.plugins.has(name)) return
config.plugin(name).use(FixMpWxAppJsonPlugin, [])
} catch (e) {
console.warn('[fix-mp] vue.config 链式插件未生效(可改用手动执行 npm run mp:fix-app-json', e && e.message)
}
},
}