-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
131 lines (113 loc) · 2.72 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
/**
* @file
* Gulpfile for frontend_example theme.
*/
'use strict';
var browserSync = require('browser-sync');
var gulp = require('gulp-npm-run')(require('gulp-help')(require('gulp')));
var sass = require('gulp-sass');
var sassLint = require('gulp-sass-lint');
var prefix = require('gulp-autoprefixer');
var concat = require('gulp-concat');
var rename = require('gulp-rename');
var stripDebug = require('gulp-strip-debug');
var svgSprite = require('gulp-svg-sprite');
var uglify = require('gulp-uglify');
var eyeglass = require('eyeglass');
//
// Path settings
//
var paths = {
js: 'js',
sourceJs: 'src_js',
sass: 'sass',
css: 'css',
};
// add sassOptions for output style and eyeglass.
var sassOptions = {
outputStyle: 'expanded',
eyeglass: {
enableImportOnce: false
}
}
// SVG Config
var SVGconfig = {
mode: {
symbol: { // symbol mode to build the SVG
dest: 'sprite', // destination foldeer
sprite: 'sprite.svg', //sprite name
example: true // Build sample page
}
},
svg: {
xmlDeclaration: false, // strip out the XML attribute
doctypeDeclaration: false // don't include the !DOCTYPE declaration
},
};
gulp.task('scripts', function () {
'use strict';
return gulp.src(paths.sourceJs + '/**/*.js')
// Concatenate everything within the JavaScript folder.
.pipe(concat('scripts.js'))
.pipe(gulp.dest(paths.js))
.pipe(rename('scripts.min.js'))
// Strip all debugger code out.
.pipe(stripDebug())
// Minify the JavaScript.
.pipe(uglify())
.pipe(gulp.dest(paths.js));
});
//
// SASS Task
//
gulp.task('styles', function () {
'use strict';
return gulp.src(paths.sass + '/**/*.scss')
.pipe(sassLint())
.pipe(sassLint.format())
.pipe(sassLint.failOnError())
.pipe(sass(eyeglass(sassOptions)).on('error', sass.logError))
.pipe(prefix(['last 1 version', '> 1%','ie 10']))
.pipe(gulp.dest(paths.css))
});
//
// Watch
//
gulp.task('watch', function () {
'use strict';
gulp.watch(paths.js + '/**/*.js', ['scripts']);
gulp.watch(paths.sass + '/**/*.scss', ['styles']);
});
/**
* Task for generating svg sprite.
*/
gulp.task('sprite-page', function() {
return gulp.src('img/icons/*.svg')
.pipe(svgSprite(SVGconfig))
.pipe(gulp.dest('.'));
});
gulp.task('sprite-shortcut', function() {
return gulp.src('sprite/sprite.svg')
.pipe(gulp.dest('.'));
});
/**
* Task for running browserSync.
*/
gulp.task('browserSync', function () {
'use strict';
var files= [
paths.css + '/**/*.css',
paths.sourceJs + '/**/*.js'
];
browserSync.init(files, {
server: {
baseDir: './'
},
port:8000,
notify:true,
});
});
/**
* Default gulp task.
*/
gulp.task('default', ['scripts', 'styles', 'watch', 'browserSync']);