UNPKG

5.53 kBJavaScriptView Raw
1'use strict';
2/**
3 * 根据项目文件信息更新精灵图
4 */
5 class UpdateImg{
6 constructor(option){
7 const _ts = this;
8 _ts.config = {};
9 _ts.m = {
10 isSprite:require('./isSprite'),
11 path:require('path'),
12 getImgInfo:require('./getImgInfo'),
13 getDirFilesPath:require('./getDirFilesPath'),
14 updateImgData:require('./updateImgData')
15 };
16
17 for(let i in option){
18 _ts.config[i] = option[i];
19 };
20
21 if(_ts.config.src){
22 return _ts.updateFile();
23 }else{
24 return _ts.updateDir();
25 };
26
27 }
28 updateFile(){
29 const _ts = this,
30 config = _ts.config,
31 m = _ts.m;
32
33 if(fws.ImgsData === undefined){
34 config.srcDirFiles = m.getDirFilesPath({srcDir:fws.srcPath});
35 return _ts.updateDir();
36 };
37
38 let key = config.src.replace(fws.srcPath,'../').replace(/\\/g,'/');
39 return new Promise((resolve,reject)=>{
40 m.getImgInfo(config.src).then(v => {
41 if(v.status === 'success'){
42 let data = v.data;
43
44 fws.ImgsData = fws.ImgsData || {};
45 fws.ImgsData[key] = {};
46 for(let i in data){
47 fws.ImgsData[key][i] = data[i];
48 };
49
50 //将JSON对象转换成SASS对象并完成图片数据文件更新
51 m.updateImgData(fws.ImgsData).then(v => {
52 resolve(v);
53 }).catch(e => {
54 reject(e);
55 });
56 };
57 }).catch(e => {
58 reject(e);
59 });
60 });
61
62 }
63 updateDir(){
64 const _ts = this,
65 m = _ts.m,
66 config = _ts.config;
67
68 return new Promise((resolve,reject)=>{
69 let imgInfoTasks = [],
70 imgInfoData = fws.ImgsData = {},
71 data = config.srcDirFiles,
72 imgInfoDataString;
73
74 //遍历项目文件,如果是图片的则获取图片信息添加至任务列表
75 for(let i in data){
76 let isImgList = ['jpg','jpeg','png','gif'].some((item)=>{
77 return '.'+item === i;
78 }),
79 _isSprite = m.isSprite(i);
80
81 if(isImgList && !_isSprite){
82 for(let ii in data[i]){
83 let isImgDir = ii.indexOf(m.path.join(fws.srcPath,'images',m.path.sep)) === 0;
84 if(isImgDir){
85 imgInfoTasks.push(m.getImgInfo(ii));
86 };
87 };
88 };
89 };
90
91 Promise.all(imgInfoTasks).then(v => {
92 //遍历图片任务数据,并生成sass数据文件写入
93 v.forEach((item,index)=>{
94 let data = item.data,
95 key = data.path.replace(fws.srcPath,'../').replace(/\\/g,'/');
96 imgInfoData[key] = {};
97 for(let i in data){
98 imgInfoData[key][i] = data[i];
99 //imgInfoData[key]['base64'] = 'base64';
100 };
101 });
102
103 //将JSON对象转换成SASS对象并完成图片数据文件更新
104 m.updateImgData(imgInfoData).then(v => {
105 resolve(v);
106 }).catch(e => {
107 reject(e);
108 });
109
110 }).catch(e => {
111 reject({
112 status:'error',
113 msg:`图片数据初始化失败`,
114 info:e
115 });
116 });
117 });
118 }
119 };
120 module.exports = UpdateImg;
121
122// class UpdateImg{
123// constructor(option){
124// const _ts = this;
125
126// let m = _ts.m = {
127// path:require('path'),
128// fs:require('fs-extra'),
129// copy:require('./copy'),
130// updateImgData:require('./updateImgData'),
131// getImgInfo:require('./getImgInfo')
132// },
133// config = {};
134
135// for(let i in option){
136// config[i] = option[i];
137// };
138
139// let key = config.src.replace(fws.srcPath,'../').replace(/\\/g,'/');
140
141// return new Promise((resolve,reject)=>{
142// m.getImgInfo(config.src).then(v => {
143// if(v.status === 'success'){
144// let data = v.data;
145
146// fws.ImgsData = fws.ImgsData || {};
147// fws.ImgsData[key] = {};
148// for(let i in data){
149// fws.ImgsData[key][i] = data[i];
150// };
151
152// // //拷贝文件
153// // new m.copy(config).then(v => {
154
155// // }).catch(e => {
156// // reject(e);
157// // });
158
159// //将JSON对象转换成SASS对象并完成图片数据文件更新
160// m.updateImgData(fws.ImgsData).then(v => {
161// resolve(v);
162// }).catch(e => {
163// reject(e);
164// });
165// };
166// }).catch(e => {
167// reject(e);
168// });
169// });
170// }
171// };
172// module.exports = UpdateImg;
\No newline at end of file