UNPKG

viject

Version:

A tool for migrating your React app from react-scripts (Create React App) to Vite

36 lines (35 loc) 1.06 kB
import { readFileSync, readdirSync, renameSync } from "node:fs"; import { Parser } from "acorn"; import jsx from "acorn-jsx"; const parser = Parser.extend(jsx()); function isJsx(source) { try { const ast = parser.parse(source, { ecmaVersion: "latest", sourceType: "module", }); return JSON.stringify(ast).includes("JSX"); } catch (_) { return true; } } export const convertJS2JSX = () => { const files = readdirSyncRecursively("src").filter((file) => /\.js$/.test(file)); for (const file of files) { const code = readFileSync(file, "utf-8"); if (isJsx(code)) { renameSync(file, `${file}x`); } } }; const readdirSyncRecursively = (directory) => { const dirents = readdirSync(directory, { withFileTypes: true }); return dirents.flatMap((dirent) => { const path = `${directory}/${dirent.name}`; if (dirent.isDirectory()) { return readdirSyncRecursively(path); } return [path]; }); };