|
| 1 | +var _ = require('lodash'); |
1 | 2 | var fs = require('fs');
|
2 | 3 | var del = require('del');
|
3 | 4 | var path = require('path');
|
@@ -192,40 +193,65 @@ module.exports = function (gulp, config) {
|
192 | 193 | cb();
|
193 | 194 | }
|
194 | 195 | }
|
195 |
| - |
196 |
| - function findChanged(cb) { |
197 | 196 |
|
198 |
| - var diff = changed('./tmp'); |
199 |
| - var tmpSrc = []; |
| 197 | + function findChanged(cb) { |
200 | 198 |
|
201 |
| - if(process.argv[2].indexOf(':all') > -1){ |
| 199 | + if (!config['supportChanged']) { |
202 | 200 | return gulp.src('./tmp/**/*', {base: paths.tmp.dir})
|
203 | 201 | .pipe(gulp.dest(paths.dist.dir))
|
204 |
| - .on('end', function(){ |
| 202 | + .on('end', function () { |
205 | 203 | delTmp();
|
206 | 204 | })
|
207 |
| - } |
| 205 | + } else { |
| 206 | + var diff = changed('./tmp'); |
| 207 | + var tmpSrc = []; |
208 | 208 |
|
209 |
| - if(diff){ |
210 |
| - for(var i in diff){ |
211 |
| - tmpSrc.push('./tmp/' + i); |
212 |
| - console.log(i + ' has changed!'); |
213 |
| - } |
| 209 | + if (!_.isEmpty(diff)) { |
| 210 | + |
| 211 | + //如果有reversion |
| 212 | + if (config['reversion'] && config['reversion']['available']) { |
| 213 | + var keys = _.keys(diff); |
| 214 | + |
| 215 | + //先取得 reversion 生成的manifest.json |
| 216 | + var reversionManifest = require(path.resolve('./tmp/manifest.json')); |
| 217 | + |
| 218 | + if (reversionManifest) { |
| 219 | + reversionManifest = _.invert(reversionManifest); |
| 220 | + |
| 221 | + reversionManifest = _.pick(reversionManifest, keys); |
| 222 | + |
| 223 | + reversionManifest = _.invert(reversionManifest); |
| 224 | + |
| 225 | + _.forEach(reversionManifest, function (item, index) { |
| 226 | + tmpSrc.push('./tmp/' + item); |
| 227 | + console.log('[changed:] ' + util.colors.blue(index)); |
| 228 | + }); |
| 229 | + |
| 230 | + //将新的 manifest.json 保存 |
| 231 | + fs.writeFileSync('./tmp/manifest.json', JSON.stringify(reversionManifest)); |
| 232 | + |
| 233 | + tmpSrc.push('./tmp/manifest.json'); |
| 234 | + } |
| 235 | + } else { |
| 236 | + _.forEach(diff, function (item, index) { |
| 237 | + tmpSrc.push('./tmp/' + index); |
| 238 | + console.log('[changed:] ' + util.colors.blue(index)); |
| 239 | + }); |
| 240 | + } |
214 | 241 |
|
215 |
| - if(!tmpSrc.length){ |
216 |
| - console.log('Nothing changed!'); |
217 |
| - delTmp(); |
218 |
| - cb(); |
219 |
| - }else{ |
220 | 242 | return gulp.src(tmpSrc, {base: paths.tmp.dir})
|
221 | 243 | .pipe(gulp.dest(paths.dist.dir))
|
222 |
| - .on('end', function(){ |
| 244 | + .on('end', function () { |
223 | 245 | delTmp();
|
224 | 246 | })
|
| 247 | + |
| 248 | + } else { |
| 249 | + console.log('Nothing changed!'); |
| 250 | + delTmp(); |
| 251 | + cb(); |
225 | 252 | }
|
226 |
| - }else{ |
227 |
| - cb(); |
228 | 253 | }
|
| 254 | + |
229 | 255 | }
|
230 | 256 |
|
231 | 257 |
|
@@ -253,10 +279,5 @@ module.exports = function (gulp, config) {
|
253 | 279 | findChanged,
|
254 | 280 | loadPlugin
|
255 | 281 | ));
|
256 |
| - |
257 |
| - //注册 build_dist 任务 |
258 |
| - gulp.task('build_dist:all', gulp.series( |
259 |
| - 'build_dist' |
260 |
| - )); |
261 | 282 | };
|
262 | 283 |
|
0 commit comments