-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.babel.js
152 lines (130 loc) · 3.57 KB
/
gulpfile.babel.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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
'use strict';
import 'babel-polyfill';
import gulp from 'gulp';
import less from 'gulp-less';
import browserSync from 'browser-sync';
const reload = browserSync.create().reload;
import babel from 'gulp-babel';
import uglify from 'gulp-uglify';
import cssmin from 'gulp-minify-css';
import clean from 'gulp-clean';
import browserify from 'gulp-browserify';
import webpack from 'gulp-webpack';
import eslint from 'gulp-eslint';
// const gulp = require('gulp');
// // less处理
// const less = require('gulp-less');
// // 实时刷新
// const browserSync = require('browser-sync').create();
// const reload = browserSync.reload;
// const babel = require('gulp-babel');
// const uglify = require('gulp-uglify');
// const rev = require('gulp-rev');
// const cssmin = require('gulp-minify-css');
// const clean = require('gulp-clean');
gulp.task("default", function() {
return gulp.src('src/index.js')
.pipe(babel())
.pipe(gulp.dest("dist"))
});
// less文件处理task
gulp.task('less:dev', () => {
gulp.src('src/*.less')
.pipe(less())
.pipe(gulp.dest('dist'));
});
// less文件处理task(含压缩)
gulp.task('cssmin', (cb) => {
gulp.src('src/*.less')
.pipe(less())
.pipe(cssmin())
// .pipe(rev()) // 给css添加哈希值
.pipe(gulp.dest('build'))
// .pipe(rev.manifest()) // 给添加哈希值的文件添加到清单中
// .pipe(gulp.dest('rev/css'));
cb();
});
// // import实现:
// gulp.task('bundle', (cb) => {
// gulp.src('src/*.js')
// .pipe(browserify())
// .pipe(gulp.dest('dist/'));
// cb();
// });
//babel
gulp.task('babel', (cb)=> {
gulp.src('src/*.js')
.pipe(babel())
.pipe(browserify())
.pipe(gulp.dest('dist'));
cb();
});
//压缩js
gulp.task('jsmin', (cb)=> {
gulp.src('src/*.js')
.pipe(babel())
.pipe(browserify())
.pipe(uglify({
mangle: true,//类型:Boolean 默认:true 是否修改变量名
compress: true,//类型:Boolean 默认:true 是否完全压缩
preserveComments: 'none' //保留所有注释 all/none
}).on('error', function(e){
console.log(e);
}))
.pipe(gulp.dest('build'));
cb();
});
// 移动html文件
gulp.task('html:dev', (cb) => {
gulp.src('src/index.html')
.pipe(gulp.dest('dist'));
cb();
});
gulp.task('html', (cb) => {
gulp.src('src/index.html')
.pipe(gulp.dest('build'));
cb();
});
// 每次打包时先清空原有的文件夹
gulp.task('clean', (cb) => {
gulp.src(['dist/*', 'rev/*', 'build'], { read: false})
.pipe(clean());
cb();
});
// 实时刷新task
gulp.task('dev', ['less:dev', 'html:dev', 'babel'], () => {
browserSync.init({
server: {
baseDir: 'dist/' // 设置服务器的根目录,即需要打开的项目文件所在的目录
},
logLevel: 'debug',
logPrefix: 'dev',
browser: 'UCBrowser', // 默认浏览器选择 chrome
notify: false // 开启静默模式
});
// 使用gulp的监听功能,实现编译修改过后的文件
gulp.watch('src/*.less', ['less:dev']);
gulp.watch('src/*.html', ['html:dev']);
gulp.watch('src/*.js', ['babel']);
// dist/*时会不成功,监听生成的文件则完美
gulp.watch(('dist/*')).on('change', reload);
});
// 生产构建:
gulp.task('build', ['clean', 'html', 'cssmin', 'jsmin']);
// webpack 打包
gulp.task('webpack-js', () => {
gulp.src(['src/*.js', 'src/scripts/*.js'])
.pipe(webpack({
output: {
filename: 'index.js'
}
}))
.pipe(gulp.dest('webpack/'))
});
// eslint
gulp.task('lint', () => {
gulp.src(['src/*.js', 'src/scripts/*.js'])
.pipe(eslint())
.pipe(eslint.format())
.pipe(eslint.failAfterError())
});