-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgulpfile.js
More file actions
116 lines (100 loc) · 3.64 KB
/
gulpfile.js
File metadata and controls
116 lines (100 loc) · 3.64 KB
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
/**
* A simple Gulp 4 Starter Kit for modern web development.
*
* @package @jr-cologne/create-gulp-starter-kit
* @author JR Cologne <kontakt@jr-cologne.de>
* @copyright 2018 JR Cologne
* @license https://github.com/jr-cologne/gulp-starter-kit/blob/master/LICENSE MIT
* @version v0.1.2-alpha
* @link https://github.com/jr-cologne/gulp-starter-kit GitHub Repository
* @link https://www.npmjs.com/package/@jr-cologne/create-gulp-starter-kit npm package site
*
* ________________________________________________________________________________
*
* gulpfile.js
*
* The gulp configuration file.
*
* Modified for use in login-script.
*
*/
const gulp = require('gulp'),
del = require('del'),
sourcemaps = require('gulp-sourcemaps'),
plumber = require('gulp-plumber'),
sass = require('gulp-sass'),
autoprefixer = require('gulp-autoprefixer'),
cssnano = require('gulp-cssnano'),
babel = require('gulp-babel'),
uglify = require('gulp-uglify'),
concat = require('gulp-concat'),
src_folder = './src/',
src_assets_folder = src_folder + 'assets/',
dist_folder = './dist/',
dist_assets_folder = dist_folder + 'assets/',
node_modules_folder = './node_modules/',
dist_node_modules_folder = dist_folder + 'node_modules/',
composer_vendor_folder = './vendor/',
dist_composer_vendor_folder = dist_folder + 'vendor/',
node_dependencies = [
'bootstrap',
'jquery',
'popper.js'
];
gulp.task('clear', () => del([ dist_folder ]));
gulp.task('php', () => {
return gulp.src([ src_folder + '**/*.php' ], { base: src_folder })
.pipe(gulp.dest(dist_folder));
});
gulp.task('sass', () => {
return gulp.src([ src_assets_folder + 'sass/**/*.sass' ])
.pipe(sourcemaps.init())
.pipe(plumber())
.pipe(sass())
.pipe(autoprefixer({
browsers: [ 'last 3 versions', '> 0.5%' ]
}))
.pipe(cssnano())
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(dist_assets_folder + 'css'));
});
gulp.task('js', () => {
return gulp.src([ src_assets_folder + 'js/**/*.js' ])
.pipe(sourcemaps.init())
.pipe(plumber())
.pipe(babel({
presets: [ 'env' ]
}))
.pipe(concat('all.js'))
.pipe(uglify())
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(dist_assets_folder + 'js'));
});
gulp.task('vendor_js', () => {
if (node_dependencies.length === 0) {
return new Promise((resolve) => {
console.log("No dependencies specified");
resolve();
});
}
return gulp.src(node_dependencies.map(dependency => node_modules_folder + dependency + '/**/*.*'), { base: node_modules_folder })
.pipe(gulp.dest(dist_node_modules_folder));
});
gulp.task('vendor_php', () => {
return gulp.src([ composer_vendor_folder + '**/*' ], { base: composer_vendor_folder })
.pipe(gulp.dest(dist_composer_vendor_folder));
});
gulp.task('vendor', gulp.parallel('vendor_js', 'vendor_php'));
gulp.task('build', gulp.series('clear', 'php', 'sass', 'js', 'vendor'));
gulp.task('watch', () => {
let watch = [
src_folder + '**/*.php',
src_assets_folder + 'sass/**/*.sass',
src_assets_folder + 'js/**/*.js'
];
node_dependencies.forEach(dependency => {
watch.push(node_modules_folder + dependency + '/**/*.*');
});
gulp.watch(watch, gulp.series('build'));
});
gulp.task('default', gulp.series('build', 'watch'));