quickdircraft
Version:
A quick and easy folder structure creator. Instantly generate the directory layout for your project and spend more time coding and less time organizing.
292 lines (251 loc) • 7.06 kB
JavaScript
const { exec } = require('child_process');
const fs = require('fs');
const path = require('path');
// Gerekli paketleri kur
console.log('Installing required packages...');
exec('npm install react-router react-router-dom react-helmet', (error, stdout, stderr) => {
if (error) {
console.error('Error installing packages:', error);
return;
}
console.log('Packages installed successfully.');
// Quick.js dosyasını çalıştır
console.log('Creating directory structure...');
const rootDirectory = 'src';
// Object representing the file structure
const pages=(str)=>{
value=`
import React, { useContext } from 'react'
import { Helmet } from 'react-helmet'
import MainContext from '../../../context/context'
const ${str} = () => {
const {data,setdata} = useContext(MainContext)
return (
<>
<Helmet>
<title>${str}</title>
</Helmet>
<div>${str} page
</div>
</>
)
}
export default ${str}
`
return value
}
const files = {
//* src/files
components: {
},
context:{
"context.jsx": `
import { createContext } from "react";
const MainContext = createContext()
export default MainContext
`
},
layout:{
admin: {
Footer: {
"footer.jsx": `
import React from 'react'
const Footer = () => {
return (
<div>Footer</div>
)
}
export default Footer
`
},
Header: {
"header.jsx": `
import React from 'react'
const Header = () => {
return (
<div>Header</div>
)
}
export default Header
`
}
},
site: {
Footer: {
"footer.jsx": `
import React from 'react'
const Footer = () => {
return (
<div>Footer</div>
)
}
export default Footer
`
},
Header: {
"header.jsx": `
import React from 'react'
const Header = () => {
return (
<div>Header</div>
)
}
export default Header
`
}}
},
pages: {
admin: {
add:{
"add.jsx": pages("Add")
},
dashboard:{
"dashboard.jsx": pages("Dashboard")
}
,
"AdminRoot.jsx": `
import React from 'react'
import { Outlet } from 'react-router'
import Header from '../../layout/admin/Header/header'
import Footer from '../../layout/admin/Footer/footer'
const AdminRoot = () => {
return (
<div>
<Header/>
<Outlet/>
<Footer/>
</div>
)
}
export default AdminRoot
`
},
site: {
home:{
"home.jsx": pages("Home")},
"SiteRoot.jsx": `
import React from 'react'
import Header from '../../layout/site/Header/header'
import { Outlet } from 'react-router'
import Footer from '../../layout/site/Footer/footer'
const SiteRoot = () => {
return (
<div>
<Header/>
<Outlet/>
<Footer/>
</div>
)
}
export default SiteRoot
`
},
error: {
error: {
"error.jsx": pages("Error")
}
},
loading: {
}
},
Routes: {
"routes.jsx":`
import AdminRoot from "../pages/admin/AdminRoot"
import Dashboard from "../pages/admin/dashboard/dashboard"
import Add from "../pages/admin/add/add"
import Error from "../pages/error/error/error"
import SiteRoot from "../pages/site/SiteRoot"
import Home from "../pages/site/home/home"
const ROUTES =[
{
path:"/",
element:<SiteRoot/>,
children:[
{
path:"",
element:<Home/>
}
]
},
{
path:"/admin",
element: <AdminRoot/>,
children:[
{
path:"",
element:<Dashboard/>
},
{
path:"add",
element:<Add/>
}
]
}
, {
path:"*",
element:<Error/>,
},
]
export default ROUTES;`
},
"App.jsx": `
import { RouterProvider, createBrowserRouter } from "react-router-dom";
import ROUTES from "./Routes/routes";
import MainContext from "./context/context";
import { useState } from "react";
function App() {
const[loading, setLoading] = useState(true);
const[error, setError] = useState('false');
const [data, setdata] = useState([]);
const router = createBrowserRouter(ROUTES);
return (
<>
<MainContext.Provider value={{data, setdata, loading, setLoading, error, setError}}>
<RouterProvider router={router }/>
</MainContext.Provider>
</>
);
}
export default App;
`
,
"index.jsx":`
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
<React.StrictMode>
<App />
</React.StrictMode>
); `
};
// Function to create files
function createFiles(directory, files) {
// Iterate over all keys (folders/files)
Object.keys(files).forEach(key => {
// Create file path
const filePath = path.join(directory, key);
// If the key is an object, create a directory and process its content
if (typeof files[key] === 'object') {
fs.mkdirSync(filePath, { recursive: true });
createFiles(filePath, files[key]);
} else { // If the key is a file, create the file and write its content
fs.writeFileSync(filePath, files[key]);
}
});
}
// Create files
createFiles(rootDirectory, files);
console.log("Files successfully created.");
console.log('quick.js executed successfully.');
// quickdircraft paketini kaldır
console.log('Uninstalling quickdircraft...');
exec('npm uninstall quickdircraft', (error, stdout, stderr) => {
if (error) {
console.error('Error uninstalling quickdircraft:', error);
return;
}
console.log('quickdircraft deleted successfully.');
});
});