basic-express-app
Version:
simple cli to generate a basic express scaffolding with minimal tmplate
72 lines (62 loc) • 1.64 kB
JavaScript
/** @format */
const argv = require("minimist")(process.argv.slice(2))
const { newCommand } = require("./helpers/command")
const { writeFileSync } = require("fs")
const chalk = require("chalk")
const figlet = require("figlet")
const Listr = require("listr")
const { installPackages } = require("./helpers/packageinstaller")
const { serverGen, gitIgnoreGen } = require("./helpers/templateGenerator")
const {
getPackageManager,
getProjectName,
} = require("./helpers/inquire.helpers")
const main = async () => {
console.log(
chalk.yellow(
figlet.textSync("BASIC EXPRESS APP", { horizontalLayout: "full" })
)
)
let project_name = argv._[0]
if (!project_name) {
project_name = await getProjectName()
}
project_name = project_name.toLowerCase()
const package_manager = await getPackageManager()
const cwd = process.cwd() + `/${project_name}`
try {
const task = new Listr([
{
title: "initialize project directory",
task: async () =>
newCommand(
`mkdir ${project_name} && cd ${project_name} && ${package_manager} init -y`
),
},
{
title: "installing dependencies",
task: async () => await installPackages(package_manager, cwd),
},
{
title: "scarfolding templates",
task: () => {
newCommand(`cd ${project_name} && mkdir src`)
serverGen(cwd)
writeFileSync(cwd + `/.env.local`, "PORT=5000")
},
},
{
title: "initializing git repository",
task: () => {
newCommand(`cd ${project_name} && git init`)
gitIgnoreGen(cwd)
},
},
])
await task.run()
} catch (error) {
console.log(error)
}
}
main()