-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathgulpfile.js
96 lines (82 loc) · 3.19 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
88
89
90
91
92
93
94
95
96
const gulp = require('gulp');
const zip = require('gulp-zip');
const less = require('gulp-less');
const del = require('del');
const rollup = require('rollup');
const babel = require('rollup-plugin-babel');
const debug = process.env.DEBUG_EXTENSION === '1';
const buildJs = (inputFile, outputFile) => {
return async cb => {
let bundle = await rollup.rollup({
input: inputFile,
plugins: [
babel({
exclude: 'node_modules/**', // only transpile our source code
}),
],
});
await bundle.write({
file: outputFile,
format: 'iife',
sourcemap: debug,
});
cb();
};
};
const buildLess = (inputs, output) => {
return cb => {
gulp.src(inputs)
.pipe(less({strictMath: true}))
.on('error', swallowError)
.pipe(gulp.dest(output));
cb();
};
};
function swallowError(error) {
console.log(error);
this.emit('end')
}
const clean = () => {
return del([
'build/**/*',
])
};
const moveStaticSource = gulp.parallel(
function copyManifest() {return gulp.src(['manifest.json']).pipe(gulp.dest('./build'))},
function copyOptions() {return gulp.src(['options/**/*.html',]).pipe(gulp.dest('./build/options'))},
function copyChangelog() {return gulp.src(['changelog/**/*.html',]).pipe(gulp.dest('./build/changelog'))},
function copyImages() {return gulp.src(['images/**/*', '!images/readme/**/*',]).pipe(gulp.dest('./build/images'))},
function copyImages() {return gulp.src(['src/**/*.woff2',]).pipe(gulp.dest('./build/'))},
function copyFixtures() {return gulp.src(['src/js/fixtures/**/*.js',]).pipe(gulp.dest('./build/fixtures/'))},
);
const jsBuild = gulp.parallel(
buildJs('./src/js/gitlab-mr-summary.js', './build/gitlab-mr-summary.js'),
buildJs('./src/js/background.js', './build/background.js'),
buildJs('./options/options.js', './build/options/options.js'),
);
const makeZip = () => {
return gulp.src('build/**/*')
.pipe(zip('./packed_extension/extension.zip'))
.pipe(gulp.dest('.'));
};
const lessBuild = gulp.parallel(
buildLess('./src/css/gitlab-mr-summary.less', './build'),
buildLess('./options/style.less', './build/options'),
buildLess('./changelog/style.less', './build/changelog'),
buildLess('./src/css/fixtures/**/*.less', './build/fixtures'),
);
function watch(done) {
gulp.watch(['**/*.less', '!build/**/*', '!node_modules/**/*'], lessBuild);
gulp.watch(['**/*.js', '!build/**/*', '!node_modules/**/*'], jsBuild);
gulp.watch(['**/*', '!src/**/*.js', 'src/js/fixtures/**/*.js', '!**/*.less', '!build/**/*', '!node_modules/**/*'], moveStaticSource);
done();
}
exports.watch = watch;
exports.lessBuild = lessBuild;
exports.jsBuild = jsBuild;
exports.makeZip = makeZip;
exports.moveStaticSource = moveStaticSource;
exports.clean = clean;
exports.build = gulp.series(clean, gulp.parallel(lessBuild, jsBuild, moveStaticSource));
exports.develop = gulp.series(clean, gulp.parallel(lessBuild, jsBuild, moveStaticSource), watch);
exports.pack = gulp.series(clean, gulp.parallel(lessBuild, jsBuild, moveStaticSource), makeZip);