1 | var gulp = require('gulp'),
|
2 | ts = require('gulp-typescript'),
|
3 | mocha = require('gulp-mocha'),
|
4 | runSequence = require('run-sequence'),
|
5 | typedoc = require("gulp-typedoc"),
|
6 | tslint = require("gulp-tslint"),
|
7 | stylish = require('tslint-stylish'),
|
8 | istanbul = require('gulp-istanbul'),
|
9 | plumber = require('gulp-plumber'),
|
10 | coveralls = require('gulp-coveralls');
|
11 |
|
12 | process.setMaxListeners(0);
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 |
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 | gulp.task("tslint", function() {
|
31 | gulp.src([
|
32 | "!./src/**/*.d.ts",
|
33 | "./src/**/*.ts"
|
34 | ])
|
35 | .pipe(tslint({
|
36 | formatter: "verbose"
|
37 | }))
|
38 | .pipe(tslint.report(stylish, {
|
39 | emitError: false,
|
40 | sort: true,
|
41 | bell: true
|
42 | }));
|
43 | });
|
44 |
|
45 | var tsProject = ts.createProject(
|
46 | 'tsconfig.json',
|
47 | {
|
48 | declaration: true,
|
49 | noExternalResolve: true,
|
50 | module:'commonjs',
|
51 | suppressImplicitAnyIndexErrors: false,
|
52 | noEmitOnError: false
|
53 | },
|
54 | ts.reporter.defaultReporter()
|
55 | );
|
56 |
|
57 |
|
58 |
|
59 |
|
60 |
|
61 |
|
62 |
|
63 |
|
64 | var mochaErr;
|
65 | var handleMochaError = function (err) {
|
66 | console.log('Mocha encountered an error, exiting with status 1');
|
67 | console.log('Error:', err.message);
|
68 | process.exit(1);
|
69 | };
|
70 |
|
71 | function handleError(err) {
|
72 | console.log(err.toString());
|
73 | this.emit('end');
|
74 | }
|
75 |
|
76 | gulp.task('test', function() {
|
77 | return gulp.src('test/**/*.spec.js', {read: false})
|
78 |
|
79 | .pipe(mocha({reporter: 'nyan'})
|
80 | .on("error", handleError));
|
81 | });
|
82 |
|
83 | gulp.task('test-travis', function (cb) {
|
84 | var mochaErr;
|
85 |
|
86 | gulp.src('test/**/*.spec.js')
|
87 | .pipe(istanbul({ includeUntested: true }))
|
88 | .pipe(istanbul.hookRequire())
|
89 | .on('finish', function() {
|
90 | return gulp.src('test/**/*.spec.js', {read: false})
|
91 |
|
92 |
|
93 | .pipe(mocha({reporter: 'spec'}))
|
94 | .pipe(istanbul.writeReports())
|
95 | |
96 |
|
97 |
|
98 |
|
99 | .on('error', function(err) {
|
100 | |
101 |
|
102 |
|
103 |
|
104 |
|
105 |
|
106 | console.error('ERROR:', err.message);
|
107 | console.error('Stack:', err.stack);
|
108 | mochaErr = err;
|
109 | })
|
110 |
|
111 | |
112 |
|
113 |
|
114 |
|
115 |
|
116 | .on('end', function () {
|
117 | if (mochaErr) return handleMochaError(mochaErr);
|
118 |
|
119 | process.exit();
|
120 | })
|
121 |
|
122 | });
|
123 | });
|
124 |
|
125 | gulp.task('coveralls-travis', function () {
|
126 |
|
127 | return gulp.src('./coverage/**/lcov.info')
|
128 | .pipe(coveralls());
|
129 | });
|
130 |
|
131 | gulp.task('build', function() {
|
132 | var tsResult = gulp.src([
|
133 | './src/index.ts',
|
134 | './src/**/*.ts',
|
135 |
|
136 | './devtypes/**/*.ts',
|
137 | ])
|
138 | .pipe(ts(tsProject));
|
139 | tsResult.dts.pipe(gulp.dest('./'));
|
140 | return tsResult.js.pipe(gulp.dest('./'));
|
141 | });
|
142 |
|
143 | gulp.task('build-test', function(callback) {
|
144 | runSequence(
|
145 | 'build',
|
146 | 'test',
|
147 | 'tslint',
|
148 |
|
149 | callback);
|
150 | });
|
151 |
|
152 | gulp.task('travis', function(callback) {
|
153 | runSequence(
|
154 | 'build',
|
155 | 'test-travis',
|
156 | callback);
|
157 | });
|
158 |
|
159 | gulp.task('watch', function(){
|
160 | gulp.watch('src/**/*.ts', ["build-test"]);
|
161 | gulp.watch('test/**/*.js', ["test"]);
|
162 | });
|
163 |
|
164 |
|
165 | gulp.task('default', ['build-test', 'watch']);
|