Skip to content

Commit

Permalink
feat(cli): remove unused deps upon demo removal (#2572 by @frankcalise)
Browse files Browse the repository at this point in the history
  • Loading branch information
frankcalise authored Dec 6, 2023
1 parent 00209bb commit 4d45ae0
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
7 changes: 7 additions & 0 deletions src/commands/new.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import {
expoGoCompatExpectedVersions,
findAndUpdateDependencyVersions,
} from "../tools/expoGoCompatibility"
import { demoDependenciesToRemove, findAndRemoveDemoDependencies } from "../tools/demo"

type Workflow = "expo" | "prebuild" | "manual"

Expand Down Expand Up @@ -566,6 +567,12 @@ module.exports = {
)
}

// - If we're removing the demo code, clean up some dependencies that are no longer needed
if (removeDemo) {
log(`Removing demo dependencies... ${demoDependenciesToRemove.join(", ")}`)
packageJsonRaw = findAndRemoveDemoDependencies(packageJsonRaw)
}

// - Then write it back out.
const packageJson = JSON.parse(packageJsonRaw)

Expand Down
19 changes: 19 additions & 0 deletions src/tools/demo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -208,3 +208,22 @@ export const demo = {
find,
update,
} as const

export const demoDependenciesToRemove = [
"@react-navigation/bottom-tabs",
"expo-application",
"react-native-drawer-layout",
]

// This function takes a package.json file as a string and removes the dependencies
// specified in demoDependenciesToRemove and returns the updated package.json as a string.
export function findAndRemoveDemoDependencies(packageJsonRaw: string): string {
let updatedPackageJson = packageJsonRaw

demoDependenciesToRemove.forEach((depName) => {
const regex = new RegExp(`"${depName}"\\s*:\\s*"[^"]+",?`, "g")
updatedPackageJson = updatedPackageJson.replace(regex, "")
})

return updatedPackageJson
}

0 comments on commit 4d45ae0

Please sign in to comment.