-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathgulpfile.js
More file actions
107 lines (95 loc) · 3.16 KB
/
Copy pathgulpfile.js
File metadata and controls
107 lines (95 loc) · 3.16 KB
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
const gulp = require('gulp');
const watch = require('gulp-watch');
const sass = require('gulp-sass');
const concat = require('gulp-concat')
const postcss = require('gulp-postcss');
const sourcemaps = require('gulp-sourcemaps');
const systemjsBuilder = require('gulp-systemjs-builder');
const ts = require('gulp-typescript');
const tslint = require('gulp-tslint');
const filter = require('gulp-filter');
const tsProject = ts.createProject('tsconfig.json');
const incrProject = ts.createProject('tsconfig.json');
const inlineb64 = require('postcss-inline-base64');
const cssnano = require('cssnano');
const urlrewrite = require('postcss-urlrewrite');
const DEBUG = !process.env.PACKAGE_BASE;
const output = process.env.PACKAGE_BASE || '.';
const cssFiles = [
'node_modules/normalizecss/normalize.css',
'node_modules/codemirror/lib/codemirror.css',
'app/**/*.css'
];
const tsFiles = 'app/**/*.ts';
const sassFiles = 'app/**/*.scss';
const jsFiles = [
'node_modules/zone.js/dist/zone.js',
'node_modules/reflect-metadata/Reflect.js',
'bundle-typescript.js'
];
const urlRewrites = {
properties: ['src'],
rules: [
{ from: /^(.*)\/(resources\/materialicons\/MaterialIcons-Regular.woff2?)$/, to: '$2' },
{ from: /^\.\.\/\.\.\/(resources\/robotomono)/, to: '$1' },
{ from: /^\.\.\/\.\.\/(resources\/roboto)/, to: '$1' },
{ from: /^\.\.\/\.\.\/(resources\/vaadinicons)/, to: '$1' }
]
};
gulp.task('ts', () => {
return tsProject.src()
.pipe(incrProject())
.js.pipe(gulp.dest('./app'))
;
});
gulp.task('ts:lint', ['ts'], () => {
// this file contains lots of copy-pastaed data, so we ignore it all
const f = filter(file => !/editor-testdata.ts$/.test(file.path) && !/typings/.test(file.path));
return tsProject.src()
.pipe(f)
.pipe(tslint({ formatter: 'prose' }))
.pipe(tslint.report({ emitError: false }))
;
});
gulp.task('ts:bundle', ['ts'], () => {
const builder = systemjsBuilder();
builder.loadConfigSync('./systemjs.config.js')
return builder.buildStatic('app/main.js', 'bundle-typescript.js', {
minify: false,
mangle: false
})
.pipe(gulp.dest('./'));
});
gulp.task('bundle', ['ts:bundle'], () => {
return gulp.src(jsFiles)
.pipe(concat('bundle.js'))
.pipe(gulp.dest('./'));
});
gulp.task('sass', function () {
return gulp.src(sassFiles)
.pipe(sass().on('error', sass.logError))
.pipe(gulp.dest('app'));
});
gulp.task('css', ['sass'], () => {
return gulp
.src(cssFiles)
.pipe(sourcemaps.init())
.pipe(concat('bundle.css'))
.pipe(postcss([
inlineb64(),
urlrewrite(urlRewrites),
// cssnano(),
]))
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest(output))
;
});
gulp.task('watch', () => {
gulp.watch(sassFiles, ['sass', 'css']);
gulp.watch(tsFiles, ['ts']);
});
const mainTasks = ['sass', 'css', 'ts'];
const buildOnlyTasks = ['ts:lint', 'bundle'];
gulp.task('build', [...mainTasks, ...buildOnlyTasks]);
gulp.task('default', [...mainTasks, 'watch']);
gulp.task('lint', ['ts', 'ts:lint']);