#!/usr/bin/env node /** * This script is used to reset the project to a blank state. * It moves the /app, /components, /hooks, /scripts, and /constants directories to /app-example and creates a new /app directory with an index.tsx and _layout.tsx file. * You can remove the `reset-project` script from package.json and safely delete this file after running it. */ const fs = require('fs'); const path = require('path'); const root = process.cwd(); const oldDirs = ['app', 'components', 'hooks', 'constants', 'scripts']; const newDir = 'app-example'; const newAppDir = 'app'; const newDirPath = path.join(root, newDir); const indexContent = `import { Text, View } from "react-native"; export default function Index() { return ( Edit app/index.tsx to edit this screen. ); } `; const layoutContent = `import { Stack } from "expo-router"; export default function RootLayout() { return ; } `; const moveDirectories = async () => { try { // Create the app-example directory await fs.promises.mkdir(newDirPath, { recursive: true }); console.log(`šŸ“ /${newDir} directory created.`); // Move old directories to new app-example directory for (const dir of oldDirs) { const oldDirPath = path.join(root, dir); const newDirPath = path.join(root, newDir, dir); if (fs.existsSync(oldDirPath)) { await fs.promises.rename(oldDirPath, newDirPath); console.log(`āž”ļø /${dir} moved to /${newDir}/${dir}.`); } else { console.log(`āž”ļø /${dir} does not exist, skipping.`); } } // Create new /app directory const newAppDirPath = path.join(root, newAppDir); await fs.promises.mkdir(newAppDirPath, { recursive: true }); console.log('\nšŸ“ New /app directory created.'); // Create index.tsx const indexPath = path.join(newAppDirPath, 'index.tsx'); await fs.promises.writeFile(indexPath, indexContent); console.log('šŸ“„ app/index.tsx created.'); // Create _layout.tsx const layoutPath = path.join(newAppDirPath, '_layout.tsx'); await fs.promises.writeFile(layoutPath, layoutContent); console.log('šŸ“„ app/_layout.tsx created.'); console.log('\nāœ… Project reset complete. Next steps:'); console.log( "1. Run `npx expo start` to start a development server.\n2. Edit app/index.tsx to edit the main screen.\n3. Delete the /app-example directory when you're done referencing it.", ); } catch (error) { console.error(`Error during script execution: ${error}`); } }; moveDirectories();