UNPKG

7.09 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../../src/commands/init/editTemplate.ts"],"names":["DEFAULT_TITLE_PLACEHOLDER","replaceNameInUTF8File","filePath","projectName","templateName","logger","debug","isPackageJson","path","basename","fileContent","fs","readFile","replacedFileContent","replace","RegExp","toLowerCase","writeFile","renameFile","oldName","newName","newFileName","join","dirname","rename","shouldRenameFile","nameToReplace","includes","shouldIgnoreFile","match","UNDERSCORED_DOTFILES","processDotfiles","dotfile","find","e","undefined","changePlaceholderInTemplate","placeholderName","placeholderTitle","projectTitle","process","cwd","reverse","stat","isDirectory"],"mappings":"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","sourcesContent":["import path from 'path';\nimport {logger} from '@react-native-community/cli-tools';\nimport walk from '../../tools/walk';\n\n// We need `graceful-fs` behavior around async file renames on Win32.\n// `gracefulify` does not support patching `fs.promises`. Use `fs-extra`, which\n// exposes its own promise-based interface over `graceful-fs`.\nimport fs from 'fs-extra';\n\ninterface PlaceholderConfig {\n projectName: string;\n placeholderName: string;\n placeholderTitle?: string;\n projectTitle?: string;\n}\n\n/**\n TODO: This is a default placeholder for title in react-native template.\n We should get rid of this once custom templates adapt `placeholderTitle` in their configurations.\n*/\nconst DEFAULT_TITLE_PLACEHOLDER = 'Hello App Display Name';\n\nasync function replaceNameInUTF8File(\n filePath: string,\n projectName: string,\n templateName: string,\n) {\n logger.debug(`Replacing in ${filePath}`);\n const isPackageJson = path.basename(filePath) === 'package.json';\n const fileContent = await fs.readFile(filePath, 'utf8');\n const replacedFileContent = fileContent\n .replace(new RegExp(templateName, 'g'), projectName)\n .replace(\n new RegExp(templateName.toLowerCase(), 'g'),\n projectName.toLowerCase(),\n );\n\n if (fileContent !== replacedFileContent) {\n await fs.writeFile(filePath, replacedFileContent, 'utf8');\n }\n\n if (isPackageJson) {\n await fs.writeFile(\n filePath,\n fileContent.replace(templateName, projectName.toLowerCase()),\n 'utf8',\n );\n }\n}\n\nasync function renameFile(filePath: string, oldName: string, newName: string) {\n const newFileName = path.join(\n path.dirname(filePath),\n path.basename(filePath).replace(new RegExp(oldName, 'g'), newName),\n );\n\n logger.debug(`Renaming ${filePath} -> file:${newFileName}`);\n\n await fs.rename(filePath, newFileName);\n}\n\nfunction shouldRenameFile(filePath: string, nameToReplace: string) {\n return path.basename(filePath).includes(nameToReplace);\n}\n\nfunction shouldIgnoreFile(filePath: string) {\n return filePath.match(/node_modules|yarn.lock|package-lock.json/g);\n}\n\nconst UNDERSCORED_DOTFILES = [\n 'buckconfig',\n 'eslintrc.js',\n 'flowconfig',\n 'gitattributes',\n 'gitignore',\n 'prettierrc.js',\n 'watchmanconfig',\n 'editorconfig',\n 'bundle',\n 'ruby-version',\n];\n\nasync function processDotfiles(filePath: string) {\n const dotfile = UNDERSCORED_DOTFILES.find((e) => filePath.includes(`_${e}`));\n\n if (dotfile === undefined) {\n return;\n }\n\n await renameFile(filePath, `_${dotfile}`, `.${dotfile}`);\n}\n\nexport async function changePlaceholderInTemplate({\n projectName,\n placeholderName,\n placeholderTitle = DEFAULT_TITLE_PLACEHOLDER,\n projectTitle = projectName,\n}: PlaceholderConfig) {\n logger.debug(`Changing ${placeholderName} for ${projectName} in template`);\n\n for (const filePath of walk(process.cwd()).reverse()) {\n if (shouldIgnoreFile(filePath)) {\n continue;\n }\n if (!(await fs.stat(filePath)).isDirectory()) {\n await replaceNameInUTF8File(filePath, projectName, placeholderName);\n await replaceNameInUTF8File(filePath, projectTitle, placeholderTitle);\n }\n if (shouldRenameFile(filePath, placeholderName)) {\n await renameFile(filePath, placeholderName, projectName);\n }\n if (shouldRenameFile(filePath, placeholderName.toLowerCase())) {\n await renameFile(\n filePath,\n placeholderName.toLowerCase(),\n projectName.toLowerCase(),\n );\n }\n\n await processDotfiles(filePath);\n }\n}\n"]}
\No newline at end of file