-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
117 lines (104 loc) · 2.65 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
const fs = require('fs');
const path = require('path');
const gulp = require('gulp');
const less = require('gulp-less');
const concat = require('gulp-concat');
const uglify = require('gulp-uglify');
const webpack = require('webpack-stream')
const minify = require('gulp-minify-css');
const del = require('del');
const paths = {
styles: {
src: 'web/styles/*.less',
dest: 'assets/sys_css/'
},
scripts: {
src: 'web/scripts/**/*.js',
dest: 'assets/sys_scripts/'
}
};
const jsPath = path.join(__dirname, 'web/scripts')
// 获取所有的js文件
const getEntry = () => {
const entry = {}
const fileList = fs.readdirSync(jsPath);
fileList
.filter(item => /\.js$/.test(item))
.map(item => {
entry[item] = path.join(jsPath, item)
});
return entry;
}
const webpackConfig = {
entry: getEntry(),
output: { filename: '[name]' },
mode: 'none',
module: {
rules:[
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/,
query: {
presets: ['es2015']
}
}
]
}
}
/**
* 并非所有的任务都是基于流,例如删除文件
* 一个 gulpfile 只是一个 Node 程序,在 gulpfile 中可以使用任何 npm 中的模块或者其他 Node.js 程序
*/
function clean() {
// del 也可以和 `gulp.src` 一样可以基于模式匹配的文件路径定义方式
return del([ 'assets' ]);
}
/*
* 通过 Javascript 函数的方式定义任务
*/
function styles() {
return gulp.src(paths.styles.src)
.pipe(less())
.pipe(minify())
.pipe(gulp.dest(paths.styles.dest))
// .pipe(concat("index.min.css"))
}
/**
* 编译 coffee 文件,然后压缩代码,然后合并到 all.min.js
* 并生成 coffee 源码的 sourcemap
*/
function scripts() {
return gulp.src(paths.scripts.src, { sourcemaps: false })
.pipe(webpack(webpackConfig))
.pipe(uglify())
// .pipe(concat('main.min.js'))
.pipe(gulp.dest(paths.scripts.dest));
}
/**
* 监控文件,当文件改变过后做对应的任务
* @return {[type]} [description]
*/
function watch() {
gulp.watch(paths.scripts.src, scripts);
gulp.watch(paths.styles.src, styles);
}
/*
* 使用 CommonJS `exports` 模块的方式定义任务
*/
exports.clean = clean;
exports.styles = styles;
exports.scripts = scripts;
exports.watch = watch;
/*
* 确定任务是以并行还是串行的方式定义任务
*/
const build = gulp.series(clean, gulp.parallel(styles, scripts));
/*
* 除了 export 的方式,也可以使用 gulp.task 的方式定义任务
*/
gulp.task('build', build);
/*
* 定义默认任务,默认任务可以直接通过 gulp 的方式调用
*/
gulp.task('default', build);