create-typescript-project-scaffolding
Version:
Scaffold your new Typescript project with everything you need
48 lines (47 loc) • 3.93 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { additionalObjects, mP } from '../util/helper.js';
import Name from './answerHandlers/name.js';
import { spawn } from 'child_process';
import { checkbox, confirm, input, select } from '@inquirer/prompts';
export function askQuestions() {
return __awaiter(this, void 0, void 0, function* () {
const promptArray = {};
promptArray['project-name'] = yield input(Object.assign(Object.assign({ message: mP() + 'The name of the project (. for current directory):' }, additionalObjects), { validate(input) {
return Name.validate(input);
} }));
promptArray['project-type'] = yield select(Object.assign({ choices: ['http-api@express-utils', 'websocket-server', 'socket-io-server', 'npm-package', 'empty-project'], message: mP() + 'Please select the type of project you want to create:' }, additionalObjects));
if (promptArray['project-type'] !== 'npm-package') {
promptArray['project-dockerfile-enabled'] = yield confirm(Object.assign({ message: mP() + 'Add Dockerfile?', default: true }, additionalObjects));
}
promptArray['project-cicd-pipeline'] = yield select(Object.assign({ choices: ['gitlab', 'github', 'none'], message: mP() + 'Select the CI-CD Pipeline Template:', default: 'github' }, additionalObjects));
promptArray['project-additional-dependencies'] = yield checkbox(Object.assign({ choices: [
{ name: 'eslint_prettier', value: 'eslint_prettier', checked: true },
{ name: 'convict', value: 'convict' },
{ name: 'ts-node-dev', value: 'ts-node-dev', checked: true },
{ name: 'winston', value: 'winston', checked: true },
{ name: 'joi', value: 'joi' },
{ name: 'amqp', value: 'amqp' },
{ name: 'mqtt', value: 'mqtt' },
], message: mP() + 'Additional Packages:' }, additionalObjects));
promptArray['project-testing-dependencies'] = yield checkbox(Object.assign({ choices: ['mocha', 'chai-http', 'nyc', 'cypress', 'jest', 'vitest'], message: mP() + 'Testing Packages:' }, additionalObjects));
promptArray['project-database-driver'] = yield checkbox(Object.assign({ choices: ['mongoose', 'typeorm', 'mysql', 'mysql2', 'mongodb', 'redis'], message: mP() + 'Database Driver:' }, additionalObjects));
promptArray['project-ncu-packages'] = yield confirm(Object.assign({ message: mP() + 'Run ncu (npm-check-updates) to force-install all latest package versions? (MAY BREAK EXAMPLE FILES):', default: false }, additionalObjects));
promptArray['project-npm-install-packages'] = yield confirm(Object.assign({ message: mP() + 'Run npm install to install dependencies?', default: false }, additionalObjects));
try {
spawn('git', ['--version']);
promptArray['project-git-init'] = yield confirm(Object.assign({ message: mP() + 'Run git init to initialize git?', default: false }, additionalObjects));
}
catch (e) {
}
promptArray['project-idea'] = yield checkbox(Object.assign({ choices: ['prettier', 'eslint'], message: mP() + 'Select .idea Folder Config files settings:' }, additionalObjects));
return promptArray;
});
}