-
Notifications
You must be signed in to change notification settings - Fork 1
/
gulpfile.js
133 lines (118 loc) · 4.19 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
var gulp = require("gulp");
var uglify = require("gulp-uglify");
var cssshrink = require('gulp-cssshrink');
var rename = require("gulp-rename");
var autoprefixer = require("gulp-autoprefixer");
var livereload = require("gulp-livereload");
var base64 = require("gulp-base64");
var compass = require('gulp-compass');
var concat = require('gulp-concat');
var source = require('vinyl-source-stream');
var gutil = require('gulp-util');
var sass = require('gulp-sass');
var gulpWebpack = require('gulp-webpack');
var webpack = require("webpack");
var WebpackDevServer = require("webpack-dev-server");
var webpackConfig = require("./webpack.config");
var webpackHotConfig = require("./webpack.hot.config");
var rev = require('gulp-rev');
var revCollector = require('gulp-rev-collector');
var runSequence = require('run-sequence');
var htmlreplace = require('gulp-html-replace');
var del = require('del');
//合并压缩一些js库
gulp.task('vendor', function() {
return gulp.src([
'node_modules/jquery/dist/jquery.js',
'node_modules/toastr/toastr.js',
'node_modules/socket.io-client/socket.io.js',
'node_modules/echarts/build/source/echarts-all.js'
]).pipe(concat('vendor.js'))
.pipe(gulp.dest('public/dist/'));
});
//转化scss到css
gulp.task('sass', function () {
gulp.src('app/stylesheets/index.scss')
.pipe(sass("index.css"))
.pipe(autoprefixer('last 2 version'))
.pipe(gulp.dest('public/dist/'))
.pipe(livereload());
});
gulp.task('publish-css', function () {
return gulp.src('public/dist/*.css')
.pipe(cssshrink())
.pipe(rev())
.pipe(gulp.dest('public/dist/'))
.pipe(rev.manifest('public/rev-manifest.json', {merge: true}))
.pipe(gulp.dest(''));
});
//监视scss文件,有变动就编译
gulp.task('sass:watch', function () {
gulp.watch('app/stylesheets/index.scss', ['sass']);
});
gulp.task('build-js', function () {
return gulp.src('app/app.js')
.pipe(gulpWebpack(webpackConfig))
.pipe(gulp.dest('public/dist/'))
});
gulp.task('publish-js', function () {
return gulp.src('public/dist/*.js')
.pipe(uglify())
.pipe(rev())
.pipe(gulp.dest('public/dist/'))
.pipe(rev.manifest('public/rev-manifest.json', {merge: true}))
.pipe(gulp.dest(''));
});
gulp.task('publish-html', function () {
return gulp.src(['public/rev-manifest.json', 'public/www/*.html'])
.pipe(revCollector({
dirReplacements: {
}
}))
.pipe(gulp.dest('public/www/'));
});
gulp.task("webpack-dev-server", function(callback) {
// Start a webpack-dev-server
var compiler = webpack(webpackHotConfig);
new WebpackDevServer(compiler, {
publicPath: '/public/',
hot:true
}).listen(3001, "localhost", function(err) {
if(err) throw new gutil.PluginError("webpack-dev-server", err);
// Server listening
gutil.log("[webpack-dev-server]", "http://localhost:3001");
});
});
gulp.task("html-dev",function(){
return gulp.src(['index.html','views/login.html','views/register.html'])
.pipe(htmlreplace({
'js': 'http://localhost:3001/public/bundle.js',
'css': 'http://localhost:3001/public/ant.css'
}))
.pipe(gulp.dest('public/www'));
})
gulp.task("html-build",function(){
return gulp.src(['index.html','views/login.html','views/register.html'])
.pipe(htmlreplace({
'js': '/dist/bundle.js',
'css': '/dist/ant.css'
}))
.pipe(gulp.dest('public/www'));
})
gulp.task('clean', function () {
return del([
'public/rev-manifest.json',
'public/dist/*',
'public/www/rev-manifest.json'
]);
});
//gulp监听任务,任何js或css改变时执行
gulp.task("watch",function(){
livereload.listen();
})
gulp.task("dev",function(){
runSequence("clean",["webpack-dev-server","watch","sass:watch","sass","vendor","html-dev"])
})
gulp.task("build",function(){
runSequence("clean",["sass","build-js","vendor"],"publish-css","publish-js","html-build","publish-html")
});