create-new-express-app
Version:
A CLI tool to create a TypeScript Express application with best practices
48 lines (47 loc) • 2.55 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createExpressApp = createExpressApp;
const fs_extra_1 = __importDefault(require("fs-extra"));
const path_1 = __importDefault(require("path"));
const picocolors_1 = __importDefault(require("picocolors"));
const get_pkg_manager_1 = require("./get-pkg-manager");
const is_online_1 = require("./is-online");
const install_1 = require("./install");
const git_1 = require("./git"); // Import the tryGitInit function
async function createExpressApp(projectDirectory) {
const templatePath = path_1.default.resolve(__dirname, "../templates/app-ts");
const targetPath = path_1.default.resolve(process.cwd(), projectDirectory);
try {
// const writable = await isWriteable(targetPath);
// if (!writable) {
// console.error(pc.red(`The directory ${targetPath} is not writable.`));
// return;
// }
fs_extra_1.default.copySync(templatePath, targetPath, { dereference: true });
console.log(picocolors_1.default.green(`Express app created at ${targetPath}`));
process.chdir(targetPath); // Change the current working directory to the target path
const packageManager = (0, get_pkg_manager_1.getPkgManager)();
const isOnline = await (0, is_online_1.getOnline)();
console.log(picocolors_1.default.green(`Installing dependencies using ${packageManager}...`));
await (0, install_1.install)(packageManager, isOnline);
console.log(picocolors_1.default.green("Dependencies installed successfully."));
// Initialize Git repository
const gitInitialized = (0, git_1.tryGitInit)(targetPath);
if (gitInitialized) {
console.log(picocolors_1.default.green("Initialized a new Git repository."));
}
else {
console.log(picocolors_1.default.red("Failed to initialize a Git repository."));
}
console.log(picocolors_1.default.green("You can now start your development server by running the following commands:"));
console.log(picocolors_1.default.cyan(`cd ${projectDirectory}`));
console.log(picocolors_1.default.cyan(`${packageManager} run dev`));
console.log(picocolors_1.default.green("Happy coding!"));
}
catch (error) {
console.error(picocolors_1.default.red(`Failed to create Express app: ${error.message}`));
}
}