UNPKG

4.29 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.createProjectSync = createProjectSync;
7exports.configPackageSync = configPackageSync;
8exports.copyTemplates = copyTemplates;
9exports.installPackage = installPackage;
10exports.versionControlSync = versionControlSync;
11
12var _path = require('path');
13
14var _path2 = _interopRequireDefault(_path);
15
16var _fs = require('fs');
17
18var _fs2 = _interopRequireDefault(_fs);
19
20var _fsExtra = require('fs-extra');
21
22var _fsExtra2 = _interopRequireDefault(_fsExtra);
23
24var _ora = require('ora');
25
26var _ora2 = _interopRequireDefault(_ora);
27
28var _ncp = require('ncp');
29
30var _temp = require('temp');
31
32var _temp2 = _interopRequireDefault(_temp);
33
34var _shelljs = require('shelljs');
35
36var _logger = require('./logger');
37
38var _logger2 = _interopRequireDefault(_logger);
39
40var _utils = require('./utils');
41
42var _config = require('./config');
43
44function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
45
46function createProjectSync(projectDir) {
47 var spinner = (0, _ora2.default)('1. Create project in ' + projectDir).start();
48
49 try {
50 var mkdirResult = (0, _shelljs.mkdir)(projectDir);
51
52 if (mkdirResult.code !== 0) {
53 throw new Error(mkdirResult.stderr);
54 }
55
56 var cdResult = (0, _shelljs.cd)(projectDir);
57
58 if (cdResult.code !== 0) {
59 throw new Error(cdResult.stderr);
60 }
61
62 spinner.succeed();
63 } catch (error) {
64 _logger2.default.error(error.message);
65 spinner.fail();
66 (0, _shelljs.exit)(1);
67 }
68}
69
70function configPackageSync() {
71 var spinner = (0, _ora2.default)('2. Configurate package.json').start();
72
73 try {
74 (0, _shelljs.exec)('npm init --force', { silent: true });
75
76 /* eslint-disable global-require, import/no-dynamic-require */
77 var packageJson = require((0, _utils.resolvePath)('package.json'));
78 /* eslint-enable */
79
80 var overridedConfig = Object.assign(packageJson, _config.PACKAGE_JSON);
81 var stringifiedConfig = JSON.stringify(overridedConfig, null, 2);
82
83 _fs2.default.writeFileSync((0, _utils.resolvePath)('package.json'), stringifiedConfig);
84
85 spinner.succeed();
86 } catch (error) {
87 _logger2.default.error(error.message);
88 spinner.fail();
89 (0, _shelljs.exit)(1);
90 }
91}
92
93function copyTemplates(projectDir) {
94 return new Promise(function (resolve, reject) {
95 var spinner = (0, _ora2.default)('3. Copy template files to src folder').start();
96 var tempPath = _temp2.default.mkdirSync('templates');
97
98 (0, _shelljs.exec)('git clone --quiet ' + _config.TEMPLATE_REPO + ' ' + tempPath);
99
100 (0, _ncp.ncp)(_path2.default.join(tempPath, 'src'), _path2.default.join(projectDir, 'src'), function (error) {
101 if (error) {
102 _logger2.default.error(error);
103 spinner.fail();
104 reject(error);
105 return;
106 }
107
108 _fsExtra2.default.copySync(_path2.default.join(tempPath, '.gitignore'), _path2.default.join(projectDir, '.gitignore'));
109
110 _fsExtra2.default.copySync(_path2.default.join(tempPath, 'webpack.config.babel.js'), _path2.default.join(projectDir, 'webpack.config.babel.js'));
111
112 spinner.succeed();
113 resolve();
114 });
115 });
116}
117
118function installPackage() {
119 var spinner = (0, _ora2.default)('4. Install package dependencies').start();
120
121 var depPromises = _config.DEPENDENCIES.map(function (depSettings) {
122 return new Promise(function (resolve) {
123 (0, _shelljs.exec)('yarn add ' + (depSettings.dev ? '--dev' : '') + ' ' + depSettings.packages.join(' '), function () {
124 resolve();
125 });
126 });
127 });
128
129 return Promise.all(depPromises).then(function (result) {
130 spinner.succeed();
131 return result;
132 }).catch(function (errors) {
133 spinner.fail();
134 throw errors;
135 });
136}
137
138function versionControlSync() {
139 var commands = ['git init', 'git add .', 'git commit -m "Initial commit"'];
140
141 var spinner = (0, _ora2.default)('5. Setup version control').start();
142
143 try {
144 commands.forEach(function (command) {
145 var result = (0, _shelljs.exec)(command, { silent: true });
146
147 if (result.code !== 0) {
148 throw new Error(result.stderr);
149 }
150 });
151
152 spinner.succeed();
153 } catch (error) {
154 _logger2.default.error(error.message);
155 spinner.fail();
156 (0, _shelljs.exit)(1);
157 }
158}
159//# sourceMappingURL=setup.js.map
\No newline at end of file