Carlos Henrique
Front-end engineer at Holmes
-
Maintenance
-
Evolution
-
Many projects
evolutionary build
Task Runner
![](https://s3.amazonaws.com/media-p.slid.es/uploads/108358/images/1990737/gulp.gif)
Today
gulp-angular-generator
![](https://s3.amazonaws.com/media-p.slid.es/uploads/108358/images/1990902/gulp-angular.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/108358/images/1990747/gulp.png)
Project 1
![](https://s3.amazonaws.com/media-p.slid.es/uploads/108358/images/1990747/gulp.png)
Project 2
![](https://s3.amazonaws.com/media-p.slid.es/uploads/108358/images/1990747/gulp.png)
Project 3
![](https://s3.amazonaws.com/media-p.slid.es/uploads/108358/images/1990747/gulp.png)
Project 4
![](https://s3.amazonaws.com/media-p.slid.es/uploads/108358/images/1990747/gulp.png)
Project 5
Projects
Maintenance
![](https://s3.amazonaws.com/media-p.slid.es/uploads/108358/images/1990747/gulp.png)
Component
Project 1
Project 2
Project 3
Project 4
Project 5
![](https://s3.amazonaws.com/media-p.slid.es/uploads/108358/images/1990747/gulp.png)
Component
C
C
C
C
C
![](https://s3.amazonaws.com/media-p.slid.es/uploads/108358/images/1990747/gulp.png)
basebuild-angular
![](https://s3.amazonaws.com/media-p.slid.es/uploads/108358/images/1990747/gulp.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/108358/images/2391757/nodejs.png)
+
Tools
![](https://s3.amazonaws.com/media-p.slid.es/uploads/108358/images/1990747/gulp.png)
Tools
gulp.task('myTask', [/* deps */], function(){
return gulp.src('src/**/*.json')
.pipe(gulp.dest('dist'));
});
Streams?
- Streams are like channels, where data can flow through it
- You can access data chunk by chunk
- Readable, writable or both
![](https://s3.amazonaws.com/media-p.slid.es/uploads/108358/images/1990747/gulp.png)
Streams
![](https://s3.amazonaws.com/media-p.slid.es/uploads/108358/images/1990747/gulp.png)
http.createServer(function(request, response){
response.writeHead(200);
response.write("<p>first text</p>");
setTimeout(function(){
response.write("<p>Last text</p>");
response.end();
}, 5000);
}).listen(8080);
Readable
Writable
Writable
Streams
![](https://s3.amazonaws.com/media-p.slid.es/uploads/108358/images/1990747/gulp.png)
http.createServer(function(request, response){
response.writeHead(200);
request.on('readable', function(){
var chunk;
while(null !== (chunk = request.read()) ){
response.write(chunk);
}
});
request.on('end', function(){
response.end();
});
}).listen(8080);
Readable
All streams are EventEmitters
Streams
![](https://s3.amazonaws.com/media-p.slid.es/uploads/108358/images/1990747/gulp.png)
http.createServer(function(request, response){
response.writeHead(200);
request.pipe(response);
}).listen(8080);
Readable
All streams are EventEmitters
![](https://s3.amazonaws.com/media-p.slid.es/uploads/108358/images/1990747/gulp.png)
gulp.task('myTask', [/* deps */], function(){
return gulp.src('src/**/*.json')
.pipe(gulp.dest('dist'));
});
![](https://s3.amazonaws.com/media-p.slid.es/uploads/108358/images/1990747/gulp.png)
basebuild-angular
node_module
Show me the code!!
How it works?
Node module
Gulp
npm
How it works?
Gulp
== {}
{
tasks: []
}
Only the host project must install gulp
How it works?
node
module
node_modules
- dependenceX
- MyComponent
+ node_modules
Project
Only the host project must install gulp
Last words...
- Create your component as a node_module
- Install gulp
- Install your component
- Require your component in Gulpfile
The end
evolutionary build
By Carlos Henrique
evolutionary build
- 136