This repository was archived by the owner on May 7, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgulpfile.js
105 lines (90 loc) · 2.8 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'),
runSequence = require('run-sequence'),
del = require('del'),
replace = require('gulp-string-replace'),
sourcemaps = require('gulp-sourcemaps'),
exec = require('child_process').exec,
ngc = require('gulp-ngc'),
changed = require('gulp-changed');
var appSrc = 'src';
var libraryDist = 'dist';
var watchDist = 'dist-watch';
var globalExcludes = [ '!./**/examples/**', '!./**/examples' ]
/**
* FUNCTION LIBRARY
*/
function copyToDist(srcArr) {
return gulp.src(srcArr.concat(globalExcludes))
.pipe(gulp.dest(function (file) {
return libraryDist + file.base.slice(__dirname.length); // save directly to dist
}));
}
function updateWatchDist() {
return gulp
.src([libraryDist + '/**'].concat(globalExcludes))
.pipe(changed(watchDist))
.pipe(gulp.dest(watchDist));
}
/**
* TASKS
*/
gulp.task('post-transpile', ['transpile'], function () {
return gulp.src(['dist/src/app/**/*.js'])
.pipe(replace(/templateUrl:\s/g, "template: require("))
.pipe(replace(/\.html',/g, ".html'),"))
.pipe(replace(/\.html'/g, ".html')"))
.pipe(replace(/styleUrls: \[/g, "styles: [require("))
.pipe(replace(/\.scss']/g, ".css').toString()]"))
.pipe(gulp.dest(function (file) {
return file.base; // because of Angular 2's encapsulation, it's natural to save the css where the scss-file was
}));
});
//Sass compilation and minifiction
gulp.task('transpile-sass', function () {
return transpileSASS(appSrc + '/app/**/*.scss');
});
// Put the SASS files back to normal
gulp.task('build-library',
[
'transpile',
// 'post-transpile',
// 'copy-html',
'copy-static-assets'
]);
gulp.task('transpile', function () {
return ngc('tsconfig.json')
});
gulp.task('copy-html', function () {
return copyToDist([
'src/**/*.html'
]);
});
gulp.task('copy-static-assets', function () {
return gulp.src([
'LICENSE',
'README.adoc',
'package.json',
])
.pipe(gulp.dest(libraryDist));
});
gulp.task('copy-watch', ['post-transpile'], function() {
return updateWatchDist();
});
gulp.task('copy-watch-all', ['build-library'], function() {
return updateWatchDist();
});
gulp.task('watch', ['build-library', 'copy-watch-all'], function () {
gulp.watch([appSrc + '/app/**/*.ts', '!' + appSrc + '/app/**/*.spec.ts'], ['transpile', 'post-transpile', 'copy-watch']).on('change', function (e) {
console.log('TypeScript file ' + e.path + ' has been changed. Compiling.');
});
gulp.watch([appSrc + '/app/**/*.scss']).on('change', function (e) {
console.log(e.path + ' has been changed. Updating.');
transpileSASS(e.path);
updateWatchDist();
});
gulp.watch([appSrc + '/app/**/*.html']).on('change', function (e) {
console.log(e.path + ' has been changed. Updating.');
copyToDist(e.path);
updateWatchDist();
});
});