gulp
@TallyB
npm install -g yo gulp bower
npm install -g generator-gulp-angular
-- Make a new directory, and cd into it
yo gulp-angular [app-name]
The Menu
-- WHY?
-- WHAT?
-- HOW?
-- Goodies
WHY?
WHAT?
How?
Development
Styles (SASS, LESS)
Compile (coffee, ES2015)
Lint
Inject
Watch
Tests
Live Reload
Build
HTML2JS
Dependencies
Compact
Minify
Image min
Deploy
OH My god,
they are using
humans to do
robots' job
WHY?
WHAT?
How?
Task Builder
Task Automation
Build Tool
grunt.js
gulp.js
-
Stream
-
Code
-
File
-
Configuration
Streams
dir > a.txt
ps aux | grep conky | grep -v grep | awk '{print $2}' | xargs kill
File vs Stream
.tmp
configuration vs code
watch: {
injectJS: {
files: [
'<%= yeoman.client %>/{app,components}/**/*.js',
'!<%= yeoman.client %>/{app,components}/**/*.spec.js',
'!<%= yeoman.client %>/{app,components}/**/*.mock.js',
'!<%= yeoman.client %>/app/server.js'],
tasks: ['injector:scripts']
},
injectCss: {
files: [
'<%= yeoman.client %>/{app,components}/**/*.css'
],
tasks: ['injector:css']
},
gulp.task('scripts', function () {
var partials = gulp.src('client/app/**/*.html')
.pipe(angularTemplatecache({
root: 'app',
module: 'morffy'
}));
var app = gulp.src('dist/client/app.js');
return sq({ objectMode: true }, app, partials)
.pipe(concat('app.js'))
.pipe(ngAnnotate())
.pipe(uglify())
.pipe(gulp.dest('dist/client/'));
});
WHY?
WHAT?
How?
gulp.src ()
gulp.dest()
gulp.pipe ()
gulp.task()
gulp.watch()
gulp.task(name[, deps], fn)
var gulp = require('gulp'); gulp.task('default', function() { // place code for your default task here });
gulp.task('mytask', ['array', 'of', 'task', 'names'], function() {
// Do stuff
});
Task
gulp.src(globs[, options])
[ 'client/app', 'client/app/**/*.html', 'client/app/**/*.js', '!client/app/**/*.scss', '!client/app/**/*.spec.js', '!client/app/**/*.e2e.js' ]
gulp.dest(path[, options])
SRC, DEST
gulp.watch(glob[, opts], tasks)
var watcher = gulp.watch('js/**/*.js', ['uglify','reload']);
watcher.on('change', function(event) {
console.log('File ' + event.path + ' was ' + event.type + ', running tasks...');
});
gulp.watch(glob[, opts, cb])
WATCH
var gulp = require('gulp');
var coffee = require('gulp-coffee');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var imagemin = require('gulp-imagemin');
var sourcemaps = require('gulp-sourcemaps');
var del = require('del');
var paths = {
scripts: ['client/js/**/*.coffee', '!client/boewr-components/**/*.coffee'],
images: 'client/img/**/*'
};
gulp.task('clean', function(done) {
del(['build'], done);
});
gulp.task('scripts', ['clean'], function() {
// Minify and copy all JavaScript (except vendor scripts)
// with sourcemaps all the way down
return gulp.src(paths.scripts)
.pipe(sourcemaps.init())
.pipe(coffee())
.pipe(uglify())
.pipe(concat('all.min.js'))
.pipe(sourcemaps.write())
.pipe(gulp.dest('build/js'));
});
Plugins
-concat
-uglify
-Inject
-CSSMIN
-GIT
-BUMP
700 More..
Angular Plugins
-NG-HTML2JS
Main-bower-files
-NGDOCS
-ng-annotate
-NG-config
-NG-ANGULAR-TemplateCache
-ANGular-Filesort
Error Handling
module.exports = function () {
return gulp.src('client/app/**/*.scss')
.pipe(plumber())
.pipe(sass())
.pipe(gulp.dest('client/app'));
};
Plumber
ON Error
var util = require ('gulp-util');
module.exports = function () {
return gulp.src('client/app/**/*.scss')
.pipe(sass())
.on('error', util.log)
.pipe(gulp.dest('client/app'));
};
GOODIES
Browser-sync
// In tasks
gulp.watch([
styles
], function () {
gulp.src(styles)
.pipe(plumber())
.pipe(sass())
.pipe(gulp.dest('client/app'))
.pipe(bsync.reload({ stream: true }));
});
var gulp = require('gulp');
var browserSync = require('browser-sync').create();
// Static server
gulp.task('browser-sync', function() {
browserSync.init({
server: {
baseDir: "./"
}
});
});
RIPE
// node server
server.listen(config.port, config.ip, function () {
console.log('Express server listening on %d, in %s mode', config.port, app.get('env'));
// notify the gulp task that the server is ready so bsync can start
if (config.env === 'development') {
require('ripe').ready();
}
});
// in gulp server run
nodemon: function (cb) {
return nodemon({
script: 'server/server.js',
ext: 'js',
})
.on('start', function () {
ripe.wait(function () {
bsync.reload({ stream: false });
});
});
}
https://github.com/42Zavattas/generator-bangular
BANGULAR
MEAN full stack
https://github.com/thaiat/generator-angular-famous-ionic
Angular-Famous-Ionic
Mobile full stack
<div>Icons made by <a href="http://www.flaticon.com/authors/anton-saputro" title="Anton Saputro">Anton Saputro</a> from <a href="http://www.flaticon.com" title="Flaticon">www.flaticon.com</a> is licensed by <a href="http://creativecommons.org/licenses/by/3.0/" title="Creative Commons BY 3.0">CC BY 3.0</a></div>
Cheers
Gulp - NGIL11
By Tally Barak
Gulp - NGIL11
- 1,589