-
Notifications
You must be signed in to change notification settings - Fork 2
/
gulpfile.js
167 lines (145 loc) · 5.29 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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
'use strict';
const gulp = require('gulp'),
sass = require('gulp-sass')(require('sass')),
concat = require('gulp-concat'),
sourcemaps = require('gulp-sourcemaps'),
rev = require('gulp-rev'),
uglify = require('gulp-uglify'),
gulpif = require('gulp-if'),
argv = require('yargs').argv,
pump = require('pump');
gulp.task('copy-static', function () {
return gulp.src(['./application/src/static/**'])
.pipe(gulp.dest('./application/static'))
})
// Copy assets from GOV.UK Frontend
gulp.task('copy-govuk-frontend-assets', function () {
return gulp.src(['./node_modules/govuk-frontend/govuk/assets/**'])
.pipe(gulp.dest('./application/static/assets'))
})
gulp.task('compile-css', function () {
return gulp.src(['./application/src/sass/*.scss'])
.pipe(sourcemaps.init())
.pipe(sass({ outputStyle: 'compressed' }).on('error', sass.logError))
.pipe(sourcemaps.write('.', { sourceRoot: '../src' }))
.pipe(gulp.dest('./application/static/stylesheets'))
});
gulp.task('compile-js-all', function () {
return gulp.src([
'./node_modules/govuk-frontend/govuk/all.js',
'./application/src/js/all/vendor/jquery.min.js',
'./application/src/js/all/vendor/polyfills/*.js',
'./application/src/js/all/govuk-template.js',
'./application/src/js/all/*.js'
])
.pipe(sourcemaps.init())
.pipe(concat('all.js', { newLine: ';' }))
.pipe(gulpif(!process.env.DISABLE_UGLIFY, uglify()))
.pipe(sourcemaps.write('.', { sourceRoot: '../src' }))
.pipe(gulp.dest('./application/static/javascripts'))
});
gulp.task('compile-js-charts', function (cb) {
pump([
gulp.src([
'./application/src/js/charts/vendor/underscore-min.js',
'./application/src/js/charts/vendor/highcharts/v8/highcharts.js',
'./application/src/js/charts/vendor/highcharts/v8/exporting.js',
'./application/src/js/charts/vendor/highcharts/v8/export-data.js',
'./application/src/js/charts/vendor/highcharts/v8/accessibility.js',
'./application/src/js/charts/rd-graph.js',
'./application/src/js/charts/rd-data-tools.js'
]),
sourcemaps.init(),
concat('charts.js'),
gulpif(!process.env.DISABLE_UGLIFY, uglify()),
sourcemaps.write('.', { sourceRoot: '../src' }),
gulp.dest('./application/static/javascripts')
], cb);
});
gulp.task('compile-js-cms', function (cb) {
pump([
gulp.src([
'./application/src/js/cms/*.js'
]),
sourcemaps.init(),
concat('cms.js'),
gulpif(!process.env.DISABLE_UGLIFY, uglify()),
sourcemaps.write('.', { sourceRoot: '../src' }),
gulp.dest('./application/static/javascripts')
],
cb
);
});
gulp.task('compile-js-tablebuilder', function (cb) {
pump([
gulp.src([
'./application/src/js/tablebuilder/*.js',
'./application/src/js/cms/rd-builder.js',
'./application/src/js/charts/rd-data-tools.js'
]),
sourcemaps.init(),
concat('tablebuilder.js'),
gulpif(!process.env.DISABLE_UGLIFY, uglify()),
sourcemaps.write('.', { sourceRoot: '../src' }),
gulp.dest('./application/static/javascripts')
],
cb
);
});
gulp.task('compile-js-chartbuilder', function (cb) {
pump([
gulp.src([
'./application/src/js/chartbuilder/*.js'
]),
sourcemaps.init(),
concat('chartbuilder.js'),
gulpif(!process.env.DISABLE_UGLIFY, uglify()),
sourcemaps.write('.', { sourceRoot: '../src' }),
gulp.dest('./application/static/javascripts')
],
cb
);
});
gulp.task('compile-js-cookies', function (cb) {
pump([
gulp.src([
'./application/src/js/cookies/*.js'
]),
sourcemaps.init(),
concat('cookies.js'),
gulpif(!process.env.DISABLE_UGLIFY, uglify()),
sourcemaps.write('.', { sourceRoot: '../src' }),
gulp.dest('./application/static/javascripts')
],
cb
);
});
gulp.task('watch', function () {
gulp.watch(['./application/src/js/**/*.js', './application/src/sass/*.scss', './application/src/sass/**/*.scss'], gulp.series('version'));
});
gulp.task('manifest-js', function () {
return gulp.src(['./application/static/javascripts/all.js',
'./application/static/javascripts/charts.js',
'./application/static/javascripts/cms.js',
'./application/static/javascripts/tablebuilder.js',
'./application/static/javascripts/chartbuilder.js',
'./application/static/javascripts/cookies.js'])
.pipe(rev())
.pipe(gulp.dest('./application/static/javascripts'))
.pipe(rev.manifest())
.pipe(gulp.dest('./application/static/javascripts'))
});
gulp.task('manifest-css', function () {
return gulp.src(['./application/static/stylesheets/application.css'])
.pipe(rev())
.pipe(gulp.dest('./application/static/stylesheets'))
.pipe(rev.manifest())
.pipe(gulp.dest('./application/static/stylesheets'))
});
gulp.task('make-js', gulp.series(gulp.parallel('compile-js-all', 'compile-js-charts', 'compile-js-cms', 'compile-js-tablebuilder', 'compile-js-chartbuilder', 'compile-js-cookies'), 'manifest-js'));
gulp.task('make-css', gulp.series(gulp.parallel('compile-css'), 'manifest-css'));
gulp.task('make', gulp.parallel('copy-govuk-frontend-assets', 'copy-static', 'make-css', 'make-js'));
gulp.task('default', gulp.series('make'));
gulp.task('watch', function () {
gulp.watch(['./application/src/js/**/*.js', './application/src/sass/*.scss', './application/src/sass/**/*.scss', './gulpfile.js'], gulp.series('make'));
});