forked from react-bootstrap-table/react-bootstrap-table2
-
Notifications
You must be signed in to change notification settings - Fork 4
/
gulpfile.babel.js
119 lines (108 loc) · 3.05 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
import gulp from "gulp";
import babel from "gulp-babel";
import gulpSass from "gulp-sass";
import dartSass from "sass";
import cleanCSS from "gulp-clean-css";
import cleanDir from "gulp-clean";
import rename from "gulp-rename";
import shell from "gulp-shell";
const sass = gulpSass(dartSass);
const LIB = "lib";
const DIST = "dist";
const TEST = "test";
const PKG_PATH = "./packages";
const NODE_MODULES = "node_modules";
const JS_PKGS = [
"react-bootstrap-table2",
"react-bootstrap-table2-editor",
"react-bootstrap-table2-filter",
"react-bootstrap-table2-overlay",
"react-bootstrap-table2-paginator",
"react-bootstrap-table2-toolkit",
].reduce((pkg, curr) => `${curr}|${pkg}`, "");
const JS_SKIPS = `+(${TEST}|${LIB}|${DIST}|${NODE_MODULES})`;
const STYLE_PKGS = [
"react-bootstrap-table2",
"react-bootstrap-table2-filter",
"react-bootstrap-table2-paginator",
"react-bootstrap-table2-toolkit",
].reduce((pkg, curr) => `${curr}|${pkg}`, "");
const STYLE_SKIPS = `+(${NODE_MODULES})`;
function clean() {
return gulp
.src(`./packages/+(${JS_PKGS})/+(${LIB}|${DIST})`, { allowEmpty: true })
.pipe(cleanDir());
}
function scripts() {
return gulp
.src([
`./packages/+(${JS_PKGS})/**/*.js`,
`!packages/+(${JS_PKGS})/${JS_SKIPS}/**/*.js`,
])
.pipe(babel())
.pipe(
rename((path) => {
if (path.dirname.indexOf("src") > -1) {
path.dirname = path.dirname.replace("src", `${LIB}/src`);
} else {
path.dirname += `/${LIB}`;
}
})
)
.pipe(gulp.dest(PKG_PATH));
}
function styles() {
return gulp
.src([
`./packages/+(${STYLE_PKGS})/style/**/*.scss`,
`!packages/+(${STYLE_PKGS})/${STYLE_SKIPS}/**/*.scss`,
])
.pipe(sass().on("error", sass.logError))
.pipe(
rename((path) => {
path.dirname = path.dirname.replace("style", DIST);
})
)
.pipe(gulp.dest(PKG_PATH))
.pipe(cleanCSS({ compatibility: "ie8" }))
.pipe(
rename((path) => {
path.extname = ".min.css";
})
)
.pipe(gulp.dest(PKG_PATH));
}
function umd(done) {
gulp.parallel(
() =>
gulp
.src("./webpack/next.umd.babel.js")
.pipe(shell(["webpack --config <%= file.path %>"])),
() =>
gulp
.src("./webpack/editor.umd.babel.js")
.pipe(shell(["webpack --config <%= file.path %>"])),
() =>
gulp
.src("./webpack/filter.umd.babel.js")
.pipe(shell(["webpack --config <%= file.path %>"])),
() =>
gulp
.src("./webpack/overlay.umd.babel.js")
.pipe(shell(["webpack --config <%= file.path %>"])),
() =>
gulp
.src("./webpack/paginator.umd.babel.js")
.pipe(shell(["webpack --config <%= file.path %>"])),
() =>
gulp
.src("./webpack/toolkit.umd.babel.js")
.pipe(shell(["webpack --config <%= file.path %>"]))
)();
done();
}
const buildJS = gulp.parallel(umd, scripts);
const buildCSS = styles;
const build = gulp.series(clean, gulp.parallel(buildJS, buildCSS));
gulp.task("prod", build);
gulp.task("default", build);