-
Notifications
You must be signed in to change notification settings - Fork 0
/
gulpfile.js
115 lines (100 loc) · 2.24 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
'use strict';
const gulp = require('gulp');
const rimraf = require('gulp-rimraf');
const tslint = require('gulp-tslint');
const mocha = require('gulp-mocha');
const shell = require('gulp-shell');
const env = require('gulp-env');
const ts = require("gulp-typescript");
const webpack = require('./gulp/webpack');
const gutil = require('gulp-util');
const tsProject = ts.createProject("tsconfig.json");
const outDir = 'dist';
const srcDir = 'src';
/**
* Set environment
*/
gulp.task('env', ['clean'], () => {
const envs = env.set({
NODE_ENV: 'dev'
});
if(process.env.NODE_ENV !== 'production'){
return gulp.src('webpack.config.js')
.pipe(gulp.dest(outDir));
}
});
/**
* Webpack bundle
*/
gulp.task('webpack', ['build'], function(done) {
webpack.build().then(function() { done(); });
});
/**
* Remove dist directory.
*/
gulp.task('clean', () => {
return gulp.src(outDir, { read: false }).pipe(rimraf());
});
/**
* Copy config files
*/
gulp.task('configs', ['clean'], (cb) => {
return gulp.src(`${srcDir}/configurations/*.json`)
.pipe(gulp.dest(`${outDir}/configurations`));
});
/**
* Copy views
*/
gulp.task('views', ['clean'], (cb) => {
return gulp.src(`views/**`)
.pipe(gulp.dest(`${outDir}/views`));
});
/**
* Watch for changes in TypeScript
*/
gulp.task('watch', shell.task([
'npm run tsc-watch',
]))
/**
* Lint all custom TypeScript files.
*/
gulp.task('tslint', () => {
return gulp.src(`${srcDir}/**/*.ts`)
.pipe(tslint({formatter: "prose"}))
.pipe(tslint.report());
});
/**
* Compile typescript files
*/
gulp.task('ts', ['tslint', 'clean'], () => {
return gulp.src(`${srcDir}/**/*.ts`)
.pipe(tsProject())
.js
.pipe(gulp.dest(outDir));
});
/**
* Build the project.
*/
gulp.task('build', ['clean', 'env', 'ts', 'configs', 'views'], () => {
return gulp.src(`${srcDir}/**/*.js`)
.pipe(gulp.dest(outDir));
});
/**
* Run tests.
*/
gulp.task('test', ['build'], (cb) => {
const envs = env.set({
NODE_ENV: 'test'
});
gulp.src([`${outDir}/test/**/*.js`])
.pipe(envs)
.pipe(mocha())
.once('error', (error) => {
console.log(error);
process.exit(1);
})
.once('end', () => {
process.exit();
});
});
gulp.task('default', ['clean', 'build']);