-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulp.js
46 lines (40 loc) · 1.43 KB
/
gulp.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
const gulp = require('gulp');
const through2 = require('through2').obj; // работа с потоками объектов
const File = require('vinyl');
// gulp.task('assets', function () {
// return gulp.src('src/assets/**/*.*')
// .pipe(through2(function (file, enc, callback) {
// // console.log(file);
// let file2 = file.clone();
// file2.path += '.bak';
// this.push(file2);
// callback(null, file);
// }))
// .pipe(gulp.dest('public'));
// // file - обьект модуля Vinyl
// // file.clone()
// // clone() - метод обьекта file
// });
gulp.task('assets', function () {
const mtimes = {};
return gulp.src('src/assets/**/*.*')
.pipe(through2(
function (file, enc, callback) {
mtimes[file.relative] = file.stat.mtime;
callback(null, file); //передача файла дальше по цепочке
},
function (callback) {
let manifest = new File({
//cwd(по умолчанию текущая директория)
//base path contents(содержимое файла)
contents: new Buffer(JSON.stringify(mtimes)),
base: process.cwd(), //текущая директория
path: process.cwd() + '/manifest.json'
});
this.push(manifest);
callback(); // сигнал о завершении
}
))
.pipe(gulp.dest('public'));
});
// file.relative - часть файла после закрепленной части (**/*.*)