gulpfile.js
3.21 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
117
118
119
120
121
122
123
124
125
126
'use strict';
/* global require, __dirname, console */
var gulp = require('gulp');
// var sass = require('gulp-sass');
var sass = require('gulp-ruby-sass');
var connect = require('gulp-connect');
// gulp.task('sass', function () {
// gulp.src('./sass/**/*.scss')
// .pipe(sass().on('error', sass.logError))
// .pipe(gulp.dest('.'))
// .pipe(connect.reload());
// });
gulp.task('sass', function() {
return sass('./sass/style.sass')
.on('error', function(err) {
console.error('Error', err.message);
})
.pipe(gulp.dest('.'))
.pipe(connect.reload());
});
gulp.task('watch', function() {
gulp.watch('./sass/**/*.sass', ['sass']);
});
gulp.task('connect', function() {
connect.server({
port: 3000,
root: [__dirname],
livereload: true
});
});
gulp.task('connect_dist', ['clean', 'copyResources', 'sass', 'compileJS', 'htmlReplace'], function() {
connect.server({
port: 3000,
root: ['./dist'],
livereload: false
});
});
gulp.task('default', ['sass', 'connect', 'watch']);
//var htmlusemin = require('gulp-usemin-html');
var useRef = require('gulp-useref');
var minifyCss = require('gulp-minify-css');
var rev = require('gulp-rev');
var revReplace = require('gulp-rev-replace');
var uglify = require('gulp-uglify');
var gulpif = require('gulp-if');
var filter = require('gulp-filter');
var sourcemaps = require('gulp-sourcemaps');
var requirejsOptimize = require('gulp-requirejs-optimize');
var concat = require('gulp-concat');
var copy = require('gulp-copy');
var add = require("gulp-add");
gulp.task('copyResources', function(){
gulp.src(["./*.html", "style.css", "./fonts/**/*.*", "./favicon.ico", "./images/**/*.*"])
.pipe(copy('dist/'));
});
gulp.task('compileJS', function() {
var mainInit =
"require.config({ paths: { \"main\": \"main-bundled\" }});require([\"main\"]);";
return gulp.src('js/main.js')
//.pipe(sourcemaps.init())
.pipe(requirejsOptimize({
baseUrl: 'js',
name: 'build',
//generateSourceMaps: true,
optimize: "none",
preserveLicenseComments: false,
paths: {
"requireLib": "require"
},
include: "requireLib",
out: "dist/main.min.js"
}).on('error', function(error) {
console.log(error);
}))
.pipe(add('dist/main-init.js', mainInit))
.pipe(concat('dist/main-bundled.js'))
//.pipe(sourcemaps.write('./'))
.pipe(gulp.dest('./'));
});
gulp.task('htmlReplace', ['clean', 'sass', 'copyResources', 'compileJS'],function() {
var assets;
var jsFilter = filter("./dist/main-bundled.js");
var cssFilter = filter("dist/*.css");
return gulp.src('dist/index.html')
.pipe(assets = useRef.assets())
.pipe(sourcemaps.init())
.pipe(rev())
.pipe(gulpif('*.js', uglify()))
.pipe(assets.restore())
.pipe(useRef())
.pipe(revReplace())
.pipe(gulpif('*.css', minifyCss({
sourceMap: true
})))
.pipe(assets.restore())
.pipe(useRef())
.pipe(revReplace())
.pipe(sourcemaps.write('./'))
.pipe(assets.restore())
.pipe(gulp.dest('dist/'));
});
var del = require('del');
gulp.task('clean', function(cb) {
del([
'dist/*.*'
], cb);
});
gulp.task('build', ['clean', 'copyResources', 'sass', 'compileJS', 'htmlReplace']);