1 | ;
|
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 |