-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
87 lines (76 loc) · 2.66 KB
/
gulpfile.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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
const gulp = require('gulp');
const concat = require('gulp-concat');
const less = require('gulp-less');
const inject = require('gulp-inject');
const rollup = require('rollup');
const image = require('gulp-image');
const assetsPath = 'src/assets/*';
const stylesPath = './src/styles/**/*.scss';
const jsPath = 'src/**/*.js';
const htmlPath = './src/visit_card.html';
const distPath = './dist/';
const rollupConfig = {
input: 'src/app.js',
plugins: [
// Не используем в rollup, используем это в gulp
// scss(), // will output compiled styles to output.css
// html({ template }),
]
}
const imageOptimizingSettings = {
pngquant: true,
optipng: true,
zopflipng: true,
mozjpeg: true,
gifsicle: true,
svgo: true,
concurrent: 10,
};
/**
* Описание задачи на сборку javascript, с помощью rollup
*/
gulp.task('rollup', async (done) => {
const bundle = await rollup.rollup(rollupConfig);
bundle.write({
format: 'esm',
file: 'dist/app.js'
});
done();
});
/**
* Простая задача на компиляцию scss файлов в файл style.css, ее отличие от rollup плагина rollup-plugin-scss
* в том, что файлы подключаются по маске, а в rollup они подключаются явно через import
**/
gulp.task('css', () => {
return gulp.src(stylesPath)
.pipe(less())
.pipe(concat('style.css'))
.pipe(gulp.dest(distPath));
});
/**
* Вотчинг всех файлов которые мы
**/
gulp.task('watch', function (done) {
gulp.watch(stylesPath, gulp.series('css'));
gulp.watch(jsPath, gulp.series('rollup'));
done();
});
/**
* Копирование картинок и прочего из папки assets, картинки обжимаются с помощью наастроек imageOptimizingSettings
*/
gulp.task('assets', function () {
return gulp.src(assetsPath)
.pipe(image(imageOptimizingSettings))
.pipe(gulp.dest(`${distPath}/assets/`));
});
/**
* Описание задачи на вставку js & css файлов в наш шаблон visit_card.html
*/
gulp.task('html', function () {
const target = gulp.src(htmlPath);
const sources = gulp.src(['./dist/**/*.js', './dist/**/*.css'], { read: false });
return target.pipe(inject(sources, { ignorePath: '../dist', relative: true, addPrefix: '.' }))
.pipe(gulp.dest(distPath));
});
gulp.task('default', gulp.series('rollup', 'css', 'assets', 'html', 'watch'));
gulp.task('build', gulp.series('rollup', 'css', 'assets', 'html'));