forked from ng-lightning/ng-lightning
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgulpfile.js
105 lines (81 loc) · 2.53 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
var gulp = require('gulp');
var runSequence = require('run-sequence');
var ts = require('gulp-typescript');
var tsProject = ts.createProject('tsconfig.json');
var argv = require('yargs').argv;
var bundle = require('./scripts/bundle');
var BUILD = tsProject.options.outDir;
var PATHS = {
src: ['src/**/*.ts','!src/**/*.spec.ts'],
spec: ['src/**/*.ts', 'test/helpers.ts'],
temp: 'temp/',
};
gulp.task('clean', function() {
return require('del')(BUILD);
});
gulp.task('lint:ts', function() {
var tslint = require('gulp-tslint');
return gulp.src( PATHS.spec )
.pipe(tslint())
.pipe(tslint.report('prose', {
summarizeFailureOutput: true,
}));
});
gulp.task('build:ts', ['lint:ts'], function() {
var replace = require('gulp-replace');
var merge = require('merge2');
var tsResult = gulp.src( PATHS.src, {base: 'src'} )
.pipe(ts(tsProject));
return merge([
tsResult.dts.pipe(replace(/^\/{3}.*$/gm, '')).pipe(gulp.dest(BUILD)),
tsResult.js.pipe(gulp.dest(BUILD))
]);
});
gulp.task('bundle', function() {
return bundle({mangle: false});
});
gulp.task('bundle:min', function() {
return bundle({minify: true, sourceMaps: true, mangle: false});
});
gulp.task('build', function(done) {
runSequence('clean', 'build:ts', ['bundle', 'bundle:min'], done);
});
gulp.task('build:watch', function() {
gulp.watch([ PATHS.src ], ['build']);
});
function startKarmaServer(isTddMode, done) {
var config = {configFile: __dirname + '/karma.conf.js', singleRun: !isTddMode, autoWatch: isTddMode};
if (argv.logLevel) config.logLevel = argv.logLevel;
var karmaServer = require('karma').Server;
new karmaServer(config, done).start();
}
gulp.task('test:clean', function() {
return require('del')(PATHS.temp);
});
gulp.task('test:build', function() {
var sourcemaps = require('gulp-sourcemaps');
var tsResult = gulp.src(PATHS.spec)
.pipe(sourcemaps.init())
.pipe(ts(tsProject));
return tsResult.js
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(PATHS.temp));
});
gulp.task('test:clean-build', function(done) {
runSequence('test:clean', 'test:build', done);
});
gulp.task('test', ['test:clean-build'], function(done) {
startKarmaServer(false, done)
});
gulp.task('tdd', ['test:clean-build'], function(done) {
startKarmaServer(true, function(err) {
done(err);
process.exit(1);
});
gulp.watch(PATHS.spec, ['test:build']);
});
gulp.task('prepublish', ['build'], function(done) {
return gulp.src(['package.json', '*.md', 'LICENSE'])
.pipe(gulp.dest(BUILD));
});
gulp.task('default', ['build']);