Skip to content

Commit 965cb60

Browse files
author
Giedrius Grabauskas
committed
Updated architecture and changed Build.Scripts task to tasks handler.
- Created new tasks: - Build.Scripts.Typescript - Build.Scripts.Tslint - Moved tslint handler logic to a new builder. - Created tslint-builder. - Updated task handler. - Optimized some logic. - Beautified some code. - TaskFunction can be builder Build function.
1 parent 6b3433a commit 965cb60

11 files changed

Lines changed: 127 additions & 82 deletions

src/builders/builder-base.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ abstract class BuilderBase<TClass> {
1212

1313
protected abstract initBuilder(production: boolean): TClass;
1414

15-
public Build(production: boolean, done: () => void) {
15+
public Build = (production: boolean, done: () => void) => {
1616
let compiler = this.getBuilder(production);
1717
let maybePromise = this.build(production, compiler, done);
1818
if (maybePromise !== undefined) {
@@ -46,4 +46,4 @@ abstract class BuilderBase<TClass> {
4646

4747
}
4848

49-
export default BuilderBase;
49+
export default BuilderBase;
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import BuilderBase from '../builder-base';
2+
import * as gulp from 'gulp';
3+
import Paths from '../../paths/paths';
4+
import tslint from 'gulp-tslint';
5+
import TsLintFormatter from './tslint-formatter';
6+
7+
class TslintBuilder extends BuilderBase<void> {
8+
9+
protected build(production: boolean, builder: void, done: () => void) {
10+
11+
let tsSrc = gulp.src([
12+
Paths.Builders.AllFiles.InSourceApp(".ts*"),
13+
`!${Paths.Builders.AllFiles.InSourceApp("d.ts")}`
14+
]);
15+
tsSrc = tsSrc.pipe(
16+
tslint({
17+
formatter: TsLintFormatter
18+
}))
19+
.on("end", done);
20+
}
21+
22+
23+
protected initBuilder(production: boolean) {
24+
return;
25+
}
26+
27+
}
28+
29+
export default new TslintBuilder();

src/builders/typescript/tslint/tslint-formatter.ts renamed to src/builders/tslint/tslint-formatter.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as Lint from "tslint/lib/lint";
2-
import Logger from '../../../utils/logger';
2+
import Logger from '../../utils/logger';
33

44
export default class ErrorHandler extends Lint.Formatters.AbstractFormatter {
55
public format(failures: Lint.RuleFailure[]) {

src/builders/typescript/typescript-builder.ts

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,6 @@ import * as path from 'path';
55
import * as ts from 'gulp-typescript';
66
import * as uglify from 'gulp-uglify';
77
import * as sourcemaps from 'gulp-sourcemaps';
8-
import * as filter from 'gulp-filter';
9-
import tslint from 'gulp-tslint';
10-
import TsLintFormatter from './tslint/tslint-formatter';
118
import TypescriptBuilderCompiler from './typescript-builder-compiler';
129
import Logger from '../../utils/logger';
1310

@@ -33,21 +30,16 @@ class TypescriptBuilder extends BuilderBase<TypescriptBuilderCompiler> {
3330

3431
protected build(production: boolean, builder: TypescriptBuilderCompiler, done: () => void) {
3532

36-
let tsFilter = filter(["**/*", "!**/*.d.ts"], { restore: true });
37-
let tsSrc = builder.Project.src();
38-
let tsResult = tsSrc.pipe(tsFilter)
39-
.pipe(tslint({
40-
formatter: TsLintFormatter
41-
}))
42-
.pipe(tsFilter.restore);
33+
let tsResult = builder.Project.src();
4334

4435
if (!production) {
4536
tsResult = tsResult.pipe(sourcemaps.init());
4637
}
4738

4839
tsResult = tsResult.pipe((builder.Project as any)(this.reporter)).js;
4940

50-
tsResult.pipe((production) ? uglify({ mangle: true }) : sourcemaps.write())
41+
tsResult
42+
.pipe((production) ? uglify({ mangle: true }) : sourcemaps.write())
5143
.pipe(gulp.dest(builder.Config.OutDir))
5244
.on("end", done);
5345
}

src/tasks/build/build-tasks-handler.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@ import { Task } from '../task-base';
55
import BuildAssetsTask from './tasks/build-assets/buid-assets-task';
66
import BuildConfigsTaskHandler from './tasks/build-configs/build-configs-tasks-handler';
77
import BuildHtmlTask from './tasks/build-html/build-html-task';
8-
import BuildScriptsTask from './tasks/build-scripts/build-scripts-task';
8+
import BuildScriptsTaskHandler from './tasks/build-scripts/build-scripts-handler';
99
import BuildStylesTask from './tasks/build-styles/build-styles-task';
1010

1111
export default class BuildTasksHandler extends TasksHandler<Task> {
1212

1313
constructor() {
1414
super(config => {
1515
config.Name = "Build";
16-
config.Tasks = [BuildAssetsTask, BuildHtmlTask, BuildScriptsTask, BuildStylesTask];
17-
config.TasksHandlers = [BuildConfigsTaskHandler];
16+
config.Tasks = [BuildAssetsTask, BuildHtmlTask, BuildStylesTask];
17+
config.TasksHandlers = [BuildConfigsTaskHandler, BuildScriptsTaskHandler];
1818
config.WithProduction = true;
1919
return config;
2020
});
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import TasksHandler from '../../../tasks-handler';
2+
import { Task } from '../../../task-base';
3+
4+
//Tasks
5+
import BuildTypescript from './tasks/build-scripts-typescript-task';
6+
import BuildTslint from './tasks/build-scripts-tslint-task';
7+
8+
export default class Tasks extends TasksHandler<Task> {
9+
10+
constructor() {
11+
super(config => {
12+
config.Name = "Build.Scripts";
13+
config.Tasks = [BuildTypescript, BuildTslint];
14+
config.WithProduction = true;
15+
config.TasksAsync = true;
16+
return config;
17+
});
18+
}
19+
}

src/tasks/build/tasks/build-scripts/build-scripts-task.ts

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import TaskBase from '../../../../task-base';
2+
import TsLintBuilder from '../../../../../builders/tslint/tslint-builder';
3+
4+
export default class BuildScriptsTask extends TaskBase {
5+
6+
Name = "Build.Scripts.Tslint";
7+
8+
Description = "Compiles Tslint to check all source warnings";
9+
10+
TaskFunction = TsLintBuilder.Build;
11+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import TaskBase from '../../../../task-base';
2+
import TypescriptBuilder from '../../../../../builders/typescript/typescript-builder';
3+
4+
export default class BuildScriptsTask extends TaskBase {
5+
6+
Name = "Build.Scripts.Typescript";
7+
8+
Description = "Compiles TypeScript from source to build directory";
9+
10+
// TaskFunction = (production: boolean, done: () => void) => {
11+
// return TypescriptBuilder.Build(production, done, this.Name);
12+
// }
13+
14+
TaskFunction = TypescriptBuilder.Build;
15+
}

src/tasks/build/tasks/build-styles/build-styles-task.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,6 @@ export default class BuildStylesgTask extends TaskBase {
77

88
Description = "Compiles *.scss files from source to build directory";
99

10-
TaskFunction = (production: boolean, done: () => void) => {
11-
StylesBuilder.Build(production, done);
12-
}
13-
10+
TaskFunction = StylesBuilder.Build;
1411

1512
}

0 commit comments

Comments
 (0)