-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.babel.js
executable file
·84 lines (77 loc) · 2.38 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
import gulp from 'gulp';
import watch from 'gulp-watch';
import babel from 'gulp-babel';
import rollup from 'gulp-rollup';
import replace from 'rollup-plugin-replace';
// 需要编译的路径
const entry = './src/server/**/*.js';
// 要进行清洗的文件 清理冗余代码
const clearEntry = './src/server/config/base.config.js';
//脚本编译 开发环境
function buildDev() {
// 开启的watch,编译一直监听着
return watch(entry, { ignoreInitial: false }, () => {
gulp.src(entry)
.pipe(babel({
// 不使用外部的.babelrc 配置
babelrc: false,
// 将es6 module 编译成require
//@babel/plugin-proposal-decorators 编译装饰器
plugins: [
["@babel/plugin-proposal-decorators", { "legacy": true }],
"@babel/plugin-transform-modules-commonjs"
]
}))
.pipe(gulp.dest('dist'))
});
}
//编译脚本 上线
function buildProd() {
return gulp.src(entry)
.pipe(babel({
// 不使用外部的.babelrc 配置
babelrc: false,
// 指定不编译的文件
ignore: [clearEntry],
plugins: [
["@babel/plugin-proposal-decorators", { "legacy": true }],
"@babel/plugin-transform-modules-commonjs"
]
}))
.pipe(gulp.dest('dist'))
}
//清洗冗余配置
function buildConfig() {
return gulp.src(entry)
.pipe(rollup({
plugins: [
replace({
// 清除当前环境下不使用的变量
"process.env.NODE_ENV": JSON.stringify('production')
})
],
output: {
// 输出commonJS格式
format: 'cjs'
},
input: clearEntry
}))
.pipe(gulp.dest('dist'))
}
//代码规则校验
/* function buildHint() {
return gulp.src([entry])
.pipe(eslint())
.pipe(eslint.format())
.pipe(eslint.failAfterError());
} */
// 设置不同环境下的执行任务
let build = gulp.series(buildDev);
if (process.env.NODE_ENV === 'production') {
build = gulp.series(buildProd, buildConfig);
}
/* if (process.env.NODE_ENV === 'hint') {
build = gulp.series(buildHint);
} */
// 导出任务
gulp.task("default", build);