UNPKG

7.5 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 _stringify = require('babel-runtime/core-js/json/stringify');
12
13var _stringify2 = _interopRequireDefault(_stringify);
14
15var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
16
17var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
18
19var _fsExtra = require('fs-extra');
20
21var _fsExtra2 = _interopRequireDefault(_fsExtra);
22
23var _colors = require('colors');
24
25var _colors2 = _interopRequireDefault(_colors);
26
27var _tools = require('./../utils/tools');
28
29function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
30
31var exec = require('child_process').execSync;
32var ora = require('ora');
33var getGitUser = require('./../utils/git-user');
34var spinner = ora('正在备份工作区代码');
35
36exports.default = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee() {
37 var copyName, sysProjectPath, localPackage, localDendencies, localDevDendencies, userPackage, userDendencies, userDevDendencies, cache, key, localVersion, _userVserion, _key, _localVersion, userVserion, updatePackageFile, updateBuildFile, useBuildFile, updateGulpFile, useGulpfile, updateReadme, useReadme, updateEslintignore, useEslintignore, updateEslintrc, useEslintrc;
38
39 return _regenerator2.default.wrap(function _callee$(_context) {
40 while (1) {
41 switch (_context.prev = _context.next) {
42 case 0:
43 spinner.start();
44 // 备份用户所有代码
45 copyName = 'copy_' + +new Date();
46 _context.next = 4;
47 return _fsExtra2.default.copy(_tools.PROJECT_PATH + '/', _tools.CLIENT_PATH + '/' + copyName);
48
49 case 4:
50 _context.next = 6;
51 return _fsExtra2.default.copy(_tools.CLIENT_PATH + '/' + copyName, _tools.PROJECT_PATH + '/' + copyName);
52
53 case 6:
54 spinner.text = '备份完毕';
55 spinner.succeed();
56 (0, _tools.deleteFolder)(_tools.CLIENT_PATH + '/' + copyName);
57
58 // 比对package.json
59 // dependencies
60 // devDependencies
61
62 exec('cd ' + _tools.CLIENT_PATH + '/project && git clone -b vue-init ssh://' + getGitUser().name + '@smartgit:29418/mobileInternet/core/FED/public ');
63 sysProjectPath = _tools.CLIENT_PATH + '/project/public/vue-init/src/project';
64
65 // 读取本地package.json
66
67 localPackage = _fsExtra2.default.readJsonSync(sysProjectPath + '/package.json');
68 localDendencies = localPackage.dependencies;
69 localDevDendencies = localPackage.devDependencies;
70
71 // 读取用户package.json
72
73 userPackage = _fsExtra2.default.readJsonSync(_tools.PROJECT_PATH + '/package.json');
74 userDendencies = userPackage.dependencies;
75 userDevDendencies = userPackage.devDependencies;
76 cache = {
77 dependencies: {},
78 devDependencies: {}
79 };
80
81
82 for (key in localDendencies) {
83 localVersion = localDendencies[key];
84
85 if (userDendencies.hasOwnProperty(key)) {
86 _userVserion = userDendencies[key];
87 // 如果本地版本大于用户版本,则使用本地版本
88
89 if (localVersion > _userVserion) {
90 cache.dependencies[key] = _userVserion + '=>' + localVersion;
91 userDendencies[key] = localVersion;
92 }
93 } else {
94 cache.dependencies[key] = ' new =>' + localVersion;
95 userDendencies[key] = localVersion;
96 }
97 }
98
99 for (_key in localDevDendencies) {
100 _localVersion = localDevDendencies[_key];
101
102 if (userDevDendencies.hasOwnProperty(_key)) {
103 userVserion = userDevDendencies[_key];
104 // 如果本地版本大于用户版本,则使用本地版本
105
106 if (_localVersion > userVserion) {
107 cache.devDependencies[_key] = userVserion + '=>' + _localVersion;
108 userDevDendencies[_key] = _localVersion;
109 }
110 } else {
111 cache.devDependencies[_key] = ' new =>' + _localVersion;
112 userDevDendencies[_key] = _localVersion;
113 }
114 }
115
116 // 更新scripts
117 userPackage.scripts = localPackage.scripts;
118
119 updatePackageFile = _tools.CLIENT_PATH + '/template/update-package.json';
120
121 _fsExtra2.default.writeJsonSync(updatePackageFile, userPackage, {
122 spaces: ' '
123 });
124
125 // 更新package.json
126 _context.next = 25;
127 return _fsExtra2.default.copy(updatePackageFile, _tools.PROJECT_PATH + '/package.json', { overwrite: true }, function (err) {
128 if (err) return console.error(err);
129 console.log('本次package.json的依赖的更新:');
130 console.log((0, _stringify2.default)(cache, null, ' '));
131 });
132
133 case 25:
134
135 // 更新build
136 updateBuildFile = sysProjectPath + '/build';
137 useBuildFile = _tools.PROJECT_PATH + '/build';
138 _context.next = 29;
139 return _fsExtra2.default.remove(useBuildFile);
140
141 case 29:
142 _context.next = 31;
143 return _fsExtra2.default.copy(updateBuildFile, useBuildFile).then(function () {
144 console.log(useBuildFile + ' \u5DF2\u66F4\u65B0');
145 });
146
147 case 31:
148
149 // 更新gulpfile.js
150 updateGulpFile = sysProjectPath + '/gulpfile.js';
151 useGulpfile = _tools.PROJECT_PATH + '/gulpfile.js';
152 _context.next = 35;
153 return _fsExtra2.default.copy(updateGulpFile, useGulpfile).then(function () {
154 console.log(useGulpfile + ' \u5DF2\u66F4\u65B0');
155 });
156
157 case 35:
158
159 // 更新readme
160 updateReadme = sysProjectPath + '/readme.md';
161 useReadme = _tools.PROJECT_PATH + '/readme.md';
162 _context.next = 39;
163 return _fsExtra2.default.copy(updateReadme, useReadme).then(function () {
164 console.log(useReadme + ' \u5DF2\u66F4\u65B0');
165 });
166
167 case 39:
168
169 // 更新eslintignore
170 updateEslintignore = sysProjectPath + '/.eslintignore';
171 useEslintignore = _tools.PROJECT_PATH + '/.eslintignore';
172 _context.next = 43;
173 return _fsExtra2.default.copy(updateEslintignore, useEslintignore).then(function () {
174 console.log(useEslintignore + ' \u5DF2\u66F4\u65B0');
175 });
176
177 case 43:
178
179 // 更新eslintrc
180 updateEslintrc = sysProjectPath + '/.eslintrc.js';
181 useEslintrc = _tools.PROJECT_PATH + '/.eslintrc.js';
182 _context.next = 47;
183 return _fsExtra2.default.copy(updateEslintrc, useEslintrc).then(function () {
184 console.log(useEslintrc + ' \u5DF2\u66F4\u65B0');
185 });
186
187 case 47:
188 _context.next = 49;
189 return _fsExtra2.default.remove(_tools.PROJECT_PATH + '/node_modules');
190
191 case 49:
192
193 console.log(_colors2.default.magenta('Project updated successfully !\nPlease run `npm i` '));
194
195 // 移除临时文件夹
196 _fsExtra2.default.remove(_tools.CLIENT_PATH + '/project/public');
197
198 case 51:
199 case 'end':
200 return _context.stop();
201 }
202 }
203 }, _callee, undefined);
204}));
205module.exports = exports['default'];
\No newline at end of file