Skip to content

Commit 3057c88

Browse files
committed
2019.03.14
1 parent 46faf81 commit 3057c88

16 files changed

Lines changed: 1801 additions & 0 deletions
Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
var path = require('path');
2+
var fs = require("fs");
3+
var VIEW_PATH = path.join(__dirname, '../develop/views/');
4+
var viewPath = fs.readdirSync(VIEW_PATH);
5+
var Excel = require('exceljs');
6+
7+
var EXTENSION = '.js';
8+
var allJS = {};
9+
10+
// 扫描文件,获得所有views目录下的JS文件
11+
function scanJS() {
12+
console.log('开始扫描文件');
13+
viewPath.forEach(function (dir) {
14+
if(dir != '.DS_Store') {
15+
var filePath = path.join(VIEW_PATH, dir);
16+
var files = fs.readdirSync(filePath);
17+
var targetFiles = files.filter(function(file) {
18+
return path.extname(file).toLowerCase() === EXTENSION;
19+
});
20+
if(targetFiles && targetFiles.length) {
21+
allJS[dir] = path.join(filePath, targetFiles[0]);
22+
}
23+
}
24+
});
25+
setJs();
26+
}
27+
28+
function setJs() {
29+
var str = '';
30+
for ( var key in allJS) {
31+
if(key !=='live' && key !=='login') { // 目前排除登录和直播两个模块的JS,因为不是按照规范的写法来写的。
32+
str += readJsAndGetRoute(allJS[key]);
33+
}
34+
}
35+
str = 'module.exports = {' + str + '}';
36+
37+
var router = eval(str);
38+
// fs.writeFileSync(path.join(__dirname, 'router.js'), str, {
39+
// encoding: 'UTF-8'
40+
// });
41+
var workbook = new Excel.Workbook();
42+
43+
workbook.creator = 'EXE';
44+
workbook.lastModifiedBy = 'Yu';
45+
workbook.created = new Date();
46+
workbook.modified = new Date();
47+
workbook.lastPrinted = new Date();
48+
49+
for (var routerKey in router) {
50+
var worksheet = workbook.addWorksheet(routerKey);
51+
worksheet
52+
.columns = [
53+
{ header: '路由名称', key: 'cname', width: 20 },
54+
{ header: '路由地址', key: 'state', width: 40},
55+
{ header: '路由参数', key: 'params', width: 60},
56+
{ header: '文件路径', key: 'path', width: 60},
57+
{ header: '控制器名称', key: 'ctrl', width: 40},
58+
{ header: 'url', key: 'url', width: 40}
59+
];
60+
var rowData = router[routerKey];
61+
for (var row in rowData) {
62+
var params = rowData[row].option.params;
63+
var newParams = {};
64+
for (var key in params) {
65+
if(params[key] && params[key].required) {
66+
newParams[key] = params[key].summary
67+
}
68+
}
69+
// 添加文件路由 和 控制器名称 leo
70+
var views = rowData[row].option.views;
71+
var newPath = '';
72+
var newCtrl = '';
73+
for(var k in views){
74+
if(k == 'main-content'){
75+
newPath = views[k].templateUrl;
76+
newCtrl = views[k].controller;
77+
}
78+
}
79+
80+
worksheet.addRow({
81+
cname: rowData[row].option.cname || '<代码内没有名称>',
82+
state: rowData[row].state,
83+
params: newParams,
84+
path: newPath,
85+
ctrl: newCtrl,
86+
url: rowData[row].option.url
87+
});
88+
}
89+
90+
}
91+
92+
93+
workbook.xlsx.writeFile(path.join(__dirname, '2.0项目路由导出.xlsx'))
94+
.then(function() {
95+
console.log('导出路由成功');
96+
});
97+
}
98+
99+
function description(summary) {
100+
return {
101+
required: true,
102+
summary
103+
}
104+
}
105+
106+
function readJsAndGetRoute(routerJsPath) {
107+
108+
var jsFile = fs.readFileSync(routerJsPath, {
109+
encoding: 'UTF-8'
110+
});
111+
var reg = /angular\.module\('exeApp'\)\s*\.\s*constant\s*\(\'.*\'\s*,\s*\[\s*({[\s\S]*?(}\s*,*\s*\]\)[^\.]))/g;
112+
// \s*({[\s\S]*?(}\s*,\s*[^{]*)){1}
113+
114+
var route = jsFile.match(reg)[0];
115+
var key = route.match(/angular\.module\('exeApp'\)\s*\.\s*constant\s*\(\'.*\'/g)[0].replace(/angular\.module\('exeApp'\)\s*\.\s*constant\s*\(\'/g, '').replace("'", '');
116+
var str = route.replace(/angular\.module\('exeApp'\)\s*\.\s*constant\s*\(\'.*\'\s*,/g, '').replace(/]\s*\)/g,"]");
117+
118+
var jsonStr = key + ':' + str + ',';
119+
jsonStr = jsonStr.replace(/\/\/description-/g, ',,,,');
120+
jsonStr = jsonStr.replace(/,?\s*,,,,/g, ',');
121+
// console.log(jsonStr)
122+
return jsonStr;
123+
}
124+
125+
scanJS();
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
var fs = require("fs");
2+
var path = require('path');
3+
var http = require('http');
4+
5+
function saveColor (data, callback) {
6+
var options = {
7+
// hostname: '127.0.0.1',
8+
hostname: 'http://moyufed.com',
9+
port: 7001,
10+
path: '/api/v1/colors',
11+
method: 'POST',
12+
headers: {
13+
'Content-Type': 'application/json; charset=UTF-8'
14+
}
15+
};
16+
var req = http.request(options, function (res) {
17+
// console.log('STATUS: ' + res.statusCode);
18+
// console.log('HEADERS: ' + JSON.stringify(res.headers));
19+
res.setEncoding('utf8');
20+
res.on('data', function (chunk) {
21+
// console.log('BODY: ' + chunk);
22+
console.log( '上传'+data.tenantId+'租户的颜色成功');
23+
if(callback && typeof callback == 'function') {
24+
callback();
25+
}
26+
});
27+
});
28+
req.on('error', function (e) {
29+
console.log( '上传'+data.tenantId+'租户的颜色失败');
30+
if(callback && typeof callback == 'function') {
31+
callback();
32+
}
33+
// console.log('problem with request: ' + e.message);
34+
});
35+
// write data to request body
36+
req.write(JSON.stringify(data));
37+
req.end();
38+
}
39+
40+
function setColor(tenantId, callback) {
41+
if(!tenantId) {
42+
return
43+
}
44+
var materialsPath = path.join(__dirname, '../materials/');
45+
var scssPath = path.join(materialsPath, '/' + tenantId + '/master/scss/base/_setting.scss');
46+
fs.exists(scssPath, function(exists){
47+
if(!exists){
48+
if(callback && typeof callback == 'function') {
49+
callback();
50+
}
51+
console.log(scssPath + ' not exists.');
52+
}else{
53+
var scssFile = fs.readFileSync(scssPath, {
54+
encoding: 'UTF-8'
55+
});
56+
var reg = /\$.*\:\s*\#\w+(\s*\#\w+)*\s*(!default)?\s*\;/g;
57+
var css = scssFile.match(reg);
58+
var obj = {};
59+
css.forEach(function (style) {
60+
var attr = style.match(/\$.*\:/g)[0].replace('$','').replace(':','');
61+
var color = style.match(/\#\w+(\s*\#\w+)*/g)[0];
62+
obj[attr] = color;
63+
});
64+
// console.log(obj);
65+
console.log( '提取'+tenantId+'颜色成功,开始上传');
66+
// console.log(css);
67+
var post_data = {
68+
tenantId: tenantId,
69+
colors: obj
70+
};
71+
saveColor(post_data, callback);
72+
}
73+
74+
});
75+
}
76+
77+
function getAllTenantColors(tenantId) {
78+
setColor(tenantId)
79+
}
80+
81+
module.exports = getAllTenantColors;
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
var fs = require("fs");
2+
var path = require('path');
3+
var unzipper = require('unzipper');
4+
var PATH = path.join(__dirname, '../develop/lib/exe_icon_fonts/');
5+
var mv = require('mv');
6+
7+
8+
function unZipFont() {
9+
console.log("开始解压字体…");
10+
fs.createReadStream(PATH+'download.zip').pipe(unzipper.Extract({ path: PATH }))
11+
.on('entry', function (entry) {
12+
}).on("close",function (data) {
13+
console.log("解压字体成功,查找字体…");
14+
var newPath = "", oldPath = "";
15+
fs.readdirSync(PATH).forEach(file => {
16+
if(fs.statSync(PATH + file).isDirectory()) {
17+
newPath = PATH+file;
18+
oldPath = PATH;
19+
}
20+
})
21+
22+
23+
console.log("查找完成,开始拷贝…");
24+
var fontFiles = fs.readdirSync(newPath);
25+
26+
var counter = 0;
27+
var fontFilesCount = fontFiles.length;
28+
29+
function moveFile() {
30+
mv(newPath+'\\'+fontFiles[counter], oldPath+'\\'+fontFiles[counter], function(err) {
31+
if(err) {
32+
console.log(err);
33+
return
34+
}
35+
console.log(counter+1+": 移动"+fontFiles[counter]+"成功");
36+
counter ++ ;
37+
if(counter < fontFilesCount) {
38+
moveFile();
39+
}
40+
if (counter == fontFilesCount) {
41+
console.log("完成拷贝,清除空目录…");
42+
fs.rmdirSync(newPath);
43+
console.log("清除成功,开始创建样式…");
44+
45+
46+
var FONT_CLASS = [];
47+
48+
var cssStr = fs.readFileSync(PATH+'iconfont.css', {
49+
encoding: 'UTF-8'
50+
});
51+
52+
var reg = /exe-\w+(-|(?=:))/g;
53+
var css = cssStr.match(reg);
54+
55+
for (var i in css) {
56+
// console.log(css[i]);
57+
if(FONT_CLASS.indexOf(css[i]) < 0) {
58+
FONT_CLASS.push(css[i])
59+
}
60+
61+
}
62+
63+
FONT_CLASS = FONT_CLASS.map(function (item) {
64+
return '[class^="'+item+'"], [class*=" '+item+'"]';
65+
})
66+
67+
// [class^="exe-"], [class*=" exe-"] {
68+
// /* use !important to prevent issues with browser extensions that change fonts */
69+
// font-family:"iconfont" !important;
70+
// speak: none;
71+
// font-style: normal;
72+
// font-weight: normal;
73+
// font-variant: normal;
74+
// text-transform: none;
75+
// line-height: 1;
76+
//
77+
// /* Better Font Rendering =========== */
78+
// -webkit-font-smoothing: antialiased;
79+
// -moz-osx-font-smoothing: grayscale;
80+
// }
81+
var replaceClassStr = FONT_CLASS.join(",\n");
82+
replaceClassStr += '\n{\n' +
83+
'\tfont-family:"iconfont" !important;\n' +
84+
'\tspeak: none;\n' +
85+
'\tfont-style: normal;\n' +
86+
'\tfont-weight: normal;\n' +
87+
'\tfont-variant: normal;\n' +
88+
'\ttext-transform: none;\n' +
89+
'\tline-height: 1;\n' +
90+
'\t-webkit-font-smoothing: antialiased;\n' +
91+
'\t-moz-osx-font-smoothing: grayscale;\n' +
92+
'}';
93+
fs.writeFileSync(PATH+'iconfont.css', cssStr+replaceClassStr, {
94+
encoding: 'UTF-8'
95+
})
96+
fs.unlinkSync(PATH+'download.zip');
97+
console.log("创建成功")
98+
}
99+
})
100+
}
101+
102+
moveFile();
103+
})
104+
}
105+
106+
module.exports = unZipFont;

0 commit comments

Comments
 (0)