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}