UNPKG

6.92 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _regenerator = require('babel-runtime/regenerator');
8
9var _regenerator2 = _interopRequireDefault(_regenerator);
10
11var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
12
13var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
14
15var _fsExtra = require('fs-extra');
16
17var _fsExtra2 = _interopRequireDefault(_fsExtra);
18
19var _os = require('os');
20
21var _os2 = _interopRequireDefault(_os);
22
23var _ejs = require('ejs');
24
25var _ejs2 = _interopRequireDefault(_ejs);
26
27var _readline = require('readline');
28
29var _readline2 = _interopRequireDefault(_readline);
30
31var _colors = require('colors');
32
33var _colors2 = _interopRequireDefault(_colors);
34
35var _tools = require('./../utils/tools');
36
37function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
38
39/**
40 * desc:增加一个页面 newPage
41 *
42 * 1.在api下生成api访问js
43 * -api
44 * -newPage.js
45 *
46 * 2.在api/index.js增加路由引入
47 *
48 */
49exports.default = function () {
50 var _ref = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(pageNames) {
51 var _loop, i, len, pageName;
52
53 return _regenerator2.default.wrap(function _callee2$(_context3) {
54 while (1) {
55 switch (_context3.prev = _context3.next) {
56 case 0:
57 _loop = /*#__PURE__*/_regenerator2.default.mark(function _loop(i, len) {
58 var lowerPageName, apiFile, apiTemplateFile, apiTemplateFileData, importApiStr, apiIndexFile, apiIndexCopyTemplateFile, apiIndexReadStream, apiIndexCopyWriteStream, apiFileReadline, index;
59 return _regenerator2.default.wrap(function _loop$(_context2) {
60 while (1) {
61 switch (_context2.prev = _context2.next) {
62 case 0:
63 pageName = pageNames[i];
64
65 // 1.在api下生成api访问js
66
67 // 首字母小写文件名
68
69 lowerPageName = (0, _tools.firstLowerCase)(pageName);
70 apiFile = _tools.API_PATH + '/' + lowerPageName + '.js';
71 apiTemplateFile = _tools.CLIENT_PATH + '/template/api.js';
72
73 // 读取api文件模版读取api文件模版
74
75 _context2.next = 6;
76 return _fsExtra2.default.readFile(apiTemplateFile);
77
78 case 6:
79 apiTemplateFileData = _context2.sent;
80
81
82 _fsExtra2.default.writeFileSync(apiFile, _ejs2.default.render(apiTemplateFileData.toString(), {
83 lowerPageName: lowerPageName
84 }));
85
86 // 2.在api/index.js增加路由引入
87
88 // 导入的API
89 importApiStr = 'import ' + lowerPageName + ' from \'./' + lowerPageName + '\'';
90 apiIndexFile = _tools.API_PATH + '/index.js';
91 apiIndexCopyTemplateFile = _tools.CLIENT_PATH + '/template/api-index-copy.js';
92
93 // 同步创建api-index-copy.js
94
95 _fsExtra2.default.writeFileSync(apiIndexCopyTemplateFile);
96
97 // 打开apiIndexFile可读的文件流
98 apiIndexReadStream = _fsExtra2.default.createReadStream(apiIndexFile);
99
100 // 创建routerCopyFile可写的文件流
101
102 apiIndexCopyWriteStream = _fsExtra2.default.createWriteStream(apiIndexCopyTemplateFile);
103
104 // 创建一个可逐行读取流
105 // input - 需要监听的可读流
106
107 apiFileReadline = _readline2.default.createInterface({
108 input: apiIndexReadStream
109 });
110 index = 0;
111 _context2.next = 18;
112 return apiFileReadline.on('line', function () {
113 var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(line) {
114 var beforeStr, insertStr;
115 return _regenerator2.default.wrap(function _callee$(_context) {
116 while (1) {
117 switch (_context.prev = _context.next) {
118 case 0:
119 beforeStr = '';
120
121 if (index == 0) {
122 index++;
123 } else {
124 beforeStr = _os2.default.EOL;
125 }
126 insertStr = '';
127
128 if (line.indexOf('export default') > -1) {
129 insertStr = beforeStr + importApiStr + _os2.default.EOL + line + _os2.default.EOL + ' ' + lowerPageName + ',';
130 } else {
131 insertStr = beforeStr + line;
132 }
133 _context.next = 6;
134 return apiIndexCopyWriteStream.write(insertStr);
135
136 case 6:
137 case 'end':
138 return _context.stop();
139 }
140 }
141 }, _callee, undefined);
142 }));
143
144 return function (_x2) {
145 return _ref2.apply(this, arguments);
146 };
147 }());
148
149 case 18:
150 _context2.next = 20;
151 return _fsExtra2.default.copy(apiIndexCopyTemplateFile, apiIndexFile);
152
153 case 20:
154 _context2.next = 22;
155 return _fsExtra2.default.unlink(apiIndexCopyTemplateFile);
156
157 case 22:
158
159 console.log(_colors2.default.magenta('visit api file :' + apiFile));
160
161 case 23:
162 case 'end':
163 return _context2.stop();
164 }
165 }
166 }, _loop, undefined);
167 });
168 i = 0, len = pageNames.length;
169
170 case 2:
171 if (!(i < len)) {
172 _context3.next = 7;
173 break;
174 }
175
176 return _context3.delegateYield(_loop(i, len), 't0', 4);
177
178 case 4:
179 i++;
180 _context3.next = 2;
181 break;
182
183 case 7:
184 case 'end':
185 return _context3.stop();
186 }
187 }
188 }, _callee2, undefined);
189 }));
190
191 return function (_x) {
192 return _ref.apply(this, arguments);
193 };
194}();
195
196module.exports = exports['default'];
\No newline at end of file