Files
myeasycms-v2/apps/expo/expo-plugins/with-modify-gradle.js

45 lines
1.5 KiB
JavaScript

// This plugin is required for fixing `.apk` build issue
// It appends Expo and RN versions into the `build.gradle` file
// References:
// https://github.com/t3-oss/create-t3-turbo/issues/120
// https://github.com/expo/expo/issues/18129
/** @type {import("@expo/config-plugins").ConfigPlugin} */
const defineConfig = (config) => {
// eslint-disable-next-line @typescript-eslint/no-var-requires
return require("@expo/config-plugins").withProjectBuildGradle(
config,
(config) => {
if (!config.modResults.contents.includes("ext.getPackageJsonVersion =")) {
config.modResults.contents = config.modResults.contents.replace(
"buildscript {",
`buildscript {
ext.getPackageJsonVersion = { packageName ->
new File(['node', '--print', "JSON.parse(require('fs').readFileSync(require.resolve('\${packageName}/package.json'), 'utf-8')).version"].execute(null, rootDir).text.trim())
}`,
);
}
if (!config.modResults.contents.includes("reactNativeVersion =")) {
config.modResults.contents = config.modResults.contents.replace(
"ext {",
`ext {
reactNativeVersion = "\${ext.getPackageJsonVersion('react-native')}"`,
);
}
if (!config.modResults.contents.includes("expoPackageVersion =")) {
config.modResults.contents = config.modResults.contents.replace(
"ext {",
`ext {
expoPackageVersion = "\${ext.getPackageJsonVersion('expo')}"`,
);
}
return config;
},
);
};
module.exports = defineConfig;