mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
1const {withAppBuildGradle} = require('@expo/config-plugins') 2 3/** 4 * A Config Plugin to disable bundle compression in Android build.gradle. 5 * @param {import('@expo/config-plugins').ConfigPlugin} config 6 * @returns {import('@expo/config-plugins').ConfigPlugin} 7 */ 8module.exports = function withNoBundleCompression(config) { 9 return withAppBuildGradle(config, androidConfig => { 10 let buildGradle = androidConfig.modResults.contents 11 12 const hasAndroidResources = buildGradle.includes('androidResources {') 13 const hasNoCompress = buildGradle.includes('noCompress') 14 15 if (hasAndroidResources) { 16 if (hasNoCompress) { 17 if ( 18 buildGradle.includes('noCompress += ["bundle"]') || 19 buildGradle.includes("noCompress += 'bundle'") || 20 buildGradle.includes('noCompress += "bundle"') 21 ) { 22 return androidConfig 23 } 24 25 const lines = buildGradle.split('\n') 26 const modifiedLines = lines.map(line => { 27 if (line.trim().startsWith('noCompress')) { 28 if (line.includes('+=')) { 29 return line.replace(/\]/, ', "bundle"]') 30 } else if (line.includes('=')) { 31 return line.replace('=', '+= ["bundle",') + ']' 32 } 33 } 34 return line 35 }) 36 androidConfig.modResults.contents = modifiedLines.join('\n') 37 } else { 38 const androidResources = buildGradle.indexOf('androidResources {') 39 if (androidResources === -1) { 40 throw new Error( 41 `Cannot find androidResources { block in build.gradle!`, 42 ) 43 } 44 const insertPosition = buildGradle.indexOf('\n', androidResources) + 1 45 const newContent = 46 buildGradle.slice(0, insertPosition) + 47 ' noCompress += ["bundle"]\n' + 48 buildGradle.slice(insertPosition) 49 50 androidConfig.modResults.contents = newContent 51 } 52 } else { 53 const androidBlock = buildGradle.indexOf('android {') 54 if (androidBlock === -1) { 55 throw new Error(`Cannot find android { block in build.gradle!`) 56 } 57 const insertPosition = buildGradle.indexOf('\n', androidBlock) + 1 58 const newContent = 59 buildGradle.slice(0, insertPosition) + 60 ' androidResources {\n' + 61 ' noCompress += ["bundle"]\n' + 62 ' }\n' + 63 buildGradle.slice(insertPosition) 64 65 androidConfig.modResults.contents = newContent 66 } 67 68 return androidConfig 69 }) 70}