-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
108 lines (95 loc) · 3.05 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
'use strict';
var gulp = require('gulp');
var browserSync = require('browser-sync').create();
var $ = require('gulp-load-plugins')();
var babelify = require('babelify');
var browserify = require('browserify');
var vinylSourceStream = require('vinyl-source-stream');
var vinylBuffer = require('vinyl-buffer');
var vinylPaths = require('vinyl-paths');
var del = require('del');
var runSequence = require('run-sequence');
var src = {
scripts: {
app: 'src/app/app.es6'
}
};
var out = {
scripts: {
file: 'app.min.js',
sourcemap: './',
folder: 'public/app/'
}
};
gulp.task('lint', () => {
return gulp.src(['src/app/**/*.es6', 'test/**/*.es6', 'gulpfile.js', 'karma.conf.js', '!/**/jquery.js'])
.pipe($.jshint('.jshintrc'))
.pipe($.jshint.reporter('jshint-stylish'))
.pipe($.jshint.reporter('fail'));
});
gulp.task('clean', () => {
return gulp.src(['public/app', 'public/images', 'public/css', 'public/index.html'], { read: false })
.pipe(vinylPaths(del));
});
gulp.task('less', () => {
return gulp.src('less/*.less')
.pipe($.less())
.pipe($.autoprefixer({
browsers: ['last 2 versions'],
cascade: false
}))
.pipe(gulp.dest('./public/css'))
.pipe(browserSync.stream());
});
gulp.task('scripts', ['lint'], () => {
return browserify({
entries: src.scripts.app,
paths: ['./src/app'],
debug: true,
extensions: ['.es6', '.js']
})
.transform(babelify.configure({
presets: ['es2015'],
plugins: ['transform-runtime']}))
.bundle()
.pipe(vinylSourceStream(out.scripts.file))
.pipe(vinylBuffer())
.pipe($.sourcemaps.init({
loadMaps: true // Load the sourcemaps browserify already generated
}))
.pipe($.ngAnnotate({ single_quotes: true }))
.pipe($.sourcemaps.write(out.scripts.sourcemap, {
includeContent: true
}))
.pipe(gulp.dest(out.scripts.folder))
.pipe(browserSync.stream());
});
gulp.task('inject', ['copyPartials'], () => {
var inject_res = gulp.src(['./public/app/**/*.js', './public/css/**/*.css'], {read: false});
return gulp.src('./public/index.html')
.pipe($.inject(inject_res, { addRootSlash: false, read: false, relative: true }))
.pipe($.wiredep({
src: './public/index.html',
directory: './public/bower_components'
}))
.pipe(gulp.dest('./public'));
});
gulp.task('copyPartials', () => {
return gulp.src(['./src/**/*.html', './src/images/**/*.*'], { base: 'src' })
.pipe(gulp.dest('./public/'));
});
// Static Server + watching files
gulp.task('serve', () => {
runSequence('clean', ['less', 'scripts'], 'inject', () => {
browserSync.init({
browser: ['google chrome'],
server: 'public/',
port: '3000'
});
gulp.watch('./less/*.less', ['less']);
gulp.watch('./src/**/*.es6', ['scripts']);
gulp.watch('./src/**/*.html', ['copyPartials']);
gulp.watch(['./public/**/*.*', '!./public/bower_components']).on('change', browserSync.reload);
});
});
gulp.task('default', ['serve']);