1
|
|
|
/* eslint import/no-extraneous-dependencies: ["error", {"devDependencies": true}] */ |
2
|
|
|
|
3
|
|
|
const gulp = require('gulp'); |
4
|
|
|
const del = require('del'); |
5
|
|
|
const bower = require('gulp-bower'); |
6
|
|
|
const mocha = require('gulp-mocha'); |
7
|
|
|
const sass = require('gulp-sass'); |
8
|
|
|
const browserify = require('gulp-browserify'); |
9
|
|
|
const shell = require('gulp-shell'); |
10
|
|
|
|
11
|
|
|
const eslint = require('gulp-eslint'); |
12
|
|
|
const scsslint = require('gulp-scss-lint'); |
13
|
|
|
|
14
|
|
|
gulp.task('clean', () => del(['./build/', './vendor/'])); |
15
|
|
|
|
16
|
|
|
gulp.task('bower:install', () => bower()); |
17
|
|
|
|
18
|
|
|
gulp.task('bower:build-zepto', ['bower:install'], shell.task('npm install && npm run dist', { |
19
|
|
|
cwd: 'vendor/zeptojs', |
20
|
|
|
})); |
21
|
|
|
|
22
|
|
|
gulp.task('build:add-vendor-js', ['bower:build-zepto'], () => gulp |
23
|
|
|
.src('vendor/**/*.min.js') |
24
|
|
|
.pipe(gulp.dest('build/chrome/js/vendor')) |
25
|
|
|
.pipe(gulp.dest('build/firefox/js/vendor'))); |
26
|
|
|
|
27
|
|
|
gulp.task('build:js', () => gulp |
28
|
|
|
.src('source/js/*.js') |
29
|
|
|
.pipe(browserify({ |
30
|
|
|
insertGlobals: true, |
31
|
|
|
debug: !gulp.env.production, |
32
|
|
|
})) |
33
|
|
|
.pipe(gulp.dest('build/chrome/js')) |
34
|
|
|
.pipe(gulp.dest('build/firefox/js'))); |
35
|
|
|
|
36
|
|
|
gulp.task('build:main', () => gulp |
37
|
|
|
.src('source/*.*') |
38
|
|
|
.pipe(gulp.dest('build/chrome')) |
39
|
|
|
.pipe(gulp.dest('build/firefox'))); |
40
|
|
|
|
41
|
|
|
gulp.task('build:images', () => gulp |
42
|
|
|
.src('source/images/**') |
43
|
|
|
.pipe(gulp.dest('build/chrome/images')) |
44
|
|
|
.pipe(gulp.dest('build/firefox/images'))); |
45
|
|
|
|
46
|
|
|
gulp.task('build:scss', () => gulp |
47
|
|
|
.src('source/styles/*.scss') |
48
|
|
|
.pipe(sass().on('error', sass.logError)) |
49
|
|
|
.pipe(gulp.dest('build/chrome/css')) |
50
|
|
|
.pipe(gulp.dest('build/firefox/css'))); |
51
|
|
|
|
52
|
|
|
gulp.task('lint:js', () => gulp |
53
|
|
|
.src('source/js/*.js') |
54
|
|
|
.pipe(eslint()) |
55
|
|
|
.pipe(eslint.format()) |
56
|
|
|
.pipe(eslint.failAfterError())); |
57
|
|
|
|
58
|
|
|
gulp.task('lint:scss', () => gulp |
59
|
|
|
.src('source/**/*.scss') |
60
|
|
|
.pipe(scsslint()) |
61
|
|
|
.pipe(scsslint.failReporter())); |
62
|
|
|
|
63
|
|
|
gulp.task('test:unit', () => gulp |
64
|
|
|
.src('test/unit/**/*.spec.js') |
65
|
|
|
.pipe(mocha())); |
66
|
|
|
|
67
|
|
|
gulp.task('dev:tdd', () => { |
68
|
|
|
const files = [ |
69
|
|
|
'lib/*.js', |
70
|
|
|
'lib/**/*.js', |
71
|
|
|
'test/**/*spec.js', |
72
|
|
|
]; |
73
|
|
|
|
74
|
|
|
return gulp |
75
|
|
|
.watch(files, ['test:unit']); |
76
|
|
|
}); |
77
|
|
|
|
78
|
|
|
gulp.task('build', ['build:js', 'build:main', 'build:images', 'build:add-vendor-js']); |
79
|
|
|
gulp.task('lint', ['lint:js']); |
80
|
|
|
|
81
|
|
|
gulp.task('default', ['build']); |
82
|
|
|
|