UNPKG

1.72 kBJavaScriptView Raw
1const appCreator = require('@creuna/create-react-app');
2const fs = require('fs');
3const fsExtra = require('fs-extra');
4const path = require('path');
5const prompt = require('@creuna/prompt');
6
7const emoji = require('./emoji');
8const messages = require('./messages');
9
10const getNewAppInput = () => {
11 return prompt({
12 projectName: `${emoji('🚀')} Project name (kebab-case)`,
13 authorName: `${emoji('😸')} Your full name`,
14 authorEmail: `${emoji('💌')} Your email address`,
15 useApiHelper: {
16 text: `${emoji('☁️')} Include API-helper?`,
17 type: Boolean
18 },
19 useMessenger: {
20 text: `${emoji('💬')} Include message helper for API?`,
21 type: Boolean
22 },
23 useAnalyticsHelper: {
24 text: `${emoji('📈')} Include Analytics helper?`,
25 type: Boolean
26 },
27 useResponsiveImages: {
28 text: `${emoji('🖼️')} Include responsive images helper?`,
29 type: Boolean
30 },
31 shouldWriteVSCodeTasks: {
32 text: `${emoji('💻')} Include VS Code shortcuts for react scripts?`,
33 type: Boolean
34 }
35 });
36};
37
38module.exports = async projectPath => {
39 try {
40 await appCreator.canWriteFiles(projectPath);
41
42 const answers = await getNewAppInput();
43 const response = await appCreator.writeFiles(
44 Object.assign({}, answers, { projectPath })
45 );
46
47 if (answers.shouldWriteVSCodeTasks) {
48 fsExtra.ensureDirSync(path.join(projectPath, '.vscode'));
49 fs.copyFileSync(
50 path.join(__dirname, 'tasks.json'),
51 path.join(projectPath, '.vscode', 'tasks.json')
52 );
53 }
54
55 messages.emptyLine();
56 messages.messageList(response.messages);
57 messages.emptyLine();
58 } catch (error) {
59 messages.error(error);
60 }
61};