/
gulpfile.js
123 lines (108 loc) · 3.01 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
var clean = require("gulp-clean"),
gulpNpmFiles = require("gulp-npm-files"),
gulp = require("gulp"),
gulpWebpack = require("webpack-stream"),
less = require("gulp-less"),
mocha = require("gulp-mocha"),
rename = require("gulp-rename"),
shell = require("gulp-shell"),
webpack = require("webpack");
var buildDirectory = "build";
gulp.task("clean", [
"clean-app",
"clean-build"
]);
gulp.task("test", [
"run-unit-tests"
]);
gulp.task("clean-app", function () {
return gulp
.src("bin/Ent*", { read: false })
.pipe(clean({ force: true }));
});
gulp.task("clean-build", function () {
return gulp
.src(buildDirectory, { read: false })
.pipe(clean({ force: true }));
});
gulp.task("build-style", [ "clean" ], function () {
return gulp
.src("src/resources/style/main.less")
.pipe(less())
.pipe(rename("browser/style.css"))
.pipe(gulp.dest(buildDirectory));
});
gulp.task("copy-package-json", [ "clean" ], function () {
return gulp
.src("package.json")
.pipe(gulp.dest(buildDirectory))
});
gulp.task("copy-source", [ "clean" ], function () {
return gulp
.src(["src/app/**.js", "src/browser/**.html", "src/*.js"], { base: "./src" })
.pipe(gulp.dest(buildDirectory));
});
gulp.task("build-source", [ "clean" ], function () {
return gulp
.src("src/browser/main.jsx")
.pipe(gulpWebpack({
output: {
filename: "bundle.js"
},
resolve: {
extensions: [ '', '.js', '.jsx' ]
},
module: {
loaders: [{
test: /\.jsx?$/,
loader: 'babel',
exclude: /node_modules/,
query: {
presets: ['react', 'es2015']
}
}]
},
plugins: [
new webpack.ProvidePlugin([
'd3',
'react'
])
],
target: "atom"
}))
.pipe(gulp.dest("build/browser/"));
});
gulp.task("copy-vendor", [ "clean" ], function () {
return gulp
.src("vendor/**", { base: "./" })
.pipe(gulp.dest(buildDirectory));
});
gulp.task("copy-node-modules", [ "clean" ], function () {
return gulp
.src(gulpNpmFiles(), { base: "./" })
.pipe(gulp.dest(buildDirectory));
});
gulp.task("run-unit-tests", function () {
return gulp
.src("test/**.js", { read: false })
.pipe(mocha())
});
gulp.task("package", [ "build", "test" ], function () {
return gulp
.src(".", { read: false })
.pipe(shell("npm run package"));
});
gulp.task("dev", [ "build" ], function () {
return gulp
.src(".", { read: false })
.pipe(shell("npm run start"));
});
gulp.task("build", [
"clean",
"build-style",
"copy-source",
"build-source",
"copy-vendor",
"copy-node-modules",
"copy-package-json"
]);