1
1
const gulp = require ( 'gulp' ) ;
2
2
const del = require ( 'del' ) ;
3
+ const runSequence = require ( 'run-sequence' ) ;
3
4
4
5
// Loading typescript requirements
5
6
const typescript = require ( 'gulp-typescript' ) ;
6
7
const tscConfig = require ( './tsconfig.json' ) ;
7
8
const sourcemaps = require ( 'gulp-sourcemaps' ) ;
8
9
const tslint = require ( 'gulp-tslint' ) ;
10
+ var watch = require ( 'gulp-watch' ) ;
9
11
10
12
// npm
11
13
var install = require ( "gulp-install" ) ;
12
14
13
- // Cleanup the dist folder
14
- gulp . task ( 'clean' , function ( ) {
15
- return del ( [ 'dist/**/*' , '!dist/node_modules' , '!dist/node_modules/**/*' ] ) ;
15
+ /**
16
+ * Remove dist directory.
17
+ */
18
+ gulp . task ( 'clean' , function ( cb ) {
19
+ del ( [ "dist" ] ) . then ( function ( paths ) {
20
+ console . log ( 'Deleted files and folders:\n' , paths . join ( '\n' ) ) ;
21
+ cb ( ) ;
22
+ } ) ;
16
23
} ) ;
17
24
18
- // Hard cleanup the dist folder
19
- gulp . task ( 'clean:hard' , function ( ) {
20
- return del ( [ 'dist/**/*' ] ) ;
21
- } ) ;
22
-
23
-
24
- // Compile Typescript
25
- gulp . task ( 'compile' , [ 'clean' ] , function ( ) {
25
+ /**
26
+ * Compile TypeScript sources and create sourcemaps in build directory.
27
+ */
28
+ gulp . task ( 'compile' , function ( ) {
26
29
var tsProject = typescript . createProject ( 'tsconfig.json' ) ;
27
30
return tsProject
28
31
. src ( 'app/**/*.ts' )
@@ -32,36 +35,73 @@ gulp.task('compile', ['clean'], function () {
32
35
. pipe ( gulp . dest ( 'dist/app' ) ) ;
33
36
} ) ;
34
37
35
- // Tslint
36
- gulp . task ( 'tslint' , function ( ) {
37
- return gulp . src ( 'app/**/*.ts' )
38
- . pipe ( tslint ( ) )
39
- . pipe ( tslint . report ( 'verbose' ) ) ;
38
+ /**
39
+ * Lint all custom TypeScript files.
40
+ */
41
+ gulp . task ( 'tslint' , function ( ) {
42
+ return gulp . src ( 'app/**/*.ts' )
43
+ . pipe ( tslint ( ) )
44
+ . pipe ( tslint . report ( 'verbose' ) ) ;
40
45
} ) ;
41
46
42
47
// copy dependencies from node_modules
43
48
// we are just mimicking the dev environment now, but for production a lot more has to be done
44
- gulp . task ( 'copy:libs' , [ 'clean' ] , function ( ) {
49
+ gulp . task ( 'copy:libs' , function ( ) {
45
50
return gulp . src ( [
46
- 'node_modules/**/*'
47
- ] )
48
- . pipe ( gulp . dest ( 'dist/node_modules' ) )
51
+ 'es6-shim/es6-shim.min.js' ,
52
+ 'systemjs/dist/system-polyfills.js' ,
53
+ 'systemjs/dist/system.src.js' ,
54
+ 'reflect-metadata/Reflect.js' ,
55
+ 'rxjs/**' ,
56
+ 'zone.js/dist/zone.js' ,
57
+ 'angular2-in-memory-web-api/web-api.js' ,
58
+ '@angular/**' ,
59
+ 'moment/moment.js' ,
60
+ 'ng2-bootstrap/**' ,
61
+ 'ng2-bs3-modal/**'
62
+ ] , { cwd : "node_modules/**" } ) /* Glob required here. */
63
+ . pipe ( gulp . dest ( "dist/lib" ) ) ;
64
+ } ) ;
65
+
66
+ /**
67
+ * copy static assets - i.e. non TypeScript compiled source
68
+ */
69
+ gulp . task ( 'copy:assets' , function ( cb ) {
70
+ console . log ( "copying assets" ) ;
71
+ gulp . src ( [ 'app/**/*' , 'assets/**/*' , 'systemjs.config.js' , 'config.js' , 'package.json' , 'index.html' , 'styles.css' , '!app/**/*.ts' ] , { base : './' } )
72
+ . pipe ( gulp . dest ( 'dist' ) ) ;
73
+ cb ( ) ;
49
74
} ) ;
50
75
51
- // copy static assets - i.e. non TypeScript compiled source
52
- gulp . task ( 'copy:assets' , [ 'clean' ] , function ( ) {
53
- return gulp . src ( [ 'app/**/*' , 'assets/**/*' , 'systemjs.config.js' , 'config.js' , 'package.json' , 'index.html' , 'styles.css' , '!app/**/*.ts' ] , { base : './' } )
54
- . pipe ( gulp . dest ( 'dist' ) )
76
+ /**
77
+ * Watch for changes in TypeScript, HTML and CSS files.
78
+ */
79
+ gulp . task ( 'watch' , function ( ) {
80
+ gulp . src ( '/**/*' , { base : "./" } )
81
+ . pipe ( watch ( "app/**/*.ts" , { base : "./" } ) )
82
+ . pipe ( gulp . dest ( "./dist" ) ) ;
83
+
84
+ gulp . src ( '' , { base : "./" } )
85
+ . pipe ( watch ( [ "app/**/*.html" , "app/**/*.css" , "assets/**/*" , "styles.css" , "index.html" , "bs-config.json" , "systemjs.config.js" , "tsconfig.json" ] , { base : "./" } ) )
86
+ . pipe ( gulp . dest ( "./dist" ) ) ;
87
+ } ) ;
88
+
89
+
90
+ /**
91
+ * The build script
92
+ */
93
+
94
+ gulp . task ( 'build' , function ( callback ) {
95
+ runSequence ( 'clean' ,
96
+ 'compile' ,
97
+ [ 'copy:assets' , 'copy:libs' ] ,
98
+ callback ) ;
55
99
} ) ;
56
100
57
- // install packages in dist, its still dev mode, we will have different folders for dev and prod mode later
58
- gulp . task ( 'copy:dep' , [ 'copy:assets' ] , function ( ) {
59
- gulp . src ( [ './dist/package.json' ] )
60
- . pipe ( install ( ) ) ;
101
+ gulp . task ( 'default' , [ 'build' ] , function ( ) {
102
+ console . log ( "Building WebCat ..." ) ;
61
103
} ) ;
62
104
63
- gulp . task ( 'build' , [ 'copy:dep' , 'compile' ] ) ;
64
- gulp . task ( 'default' , [ 'build' ] ) ;
65
105
66
106
67
107
0 commit comments