Gulp
setup
1. install Node.js
2.
$ npm install gulp -g
4. create a gulpfile.js at the root of project
var gulp = require('gulp');
gulp.task('default', function() {
// place code for your default task here
});
3.
$ npm install --save-dev gulp
Gulp Method
- gulp.task
定義工作內容 - gulp.watch
關注指定檔案是否異動 - gulp.src
指定檔案來源 - gulp.dest
指定檔案存放位置
task('default', [A, B, ...])
src(files)
watch( 'files', task.A )
pipe(...)
dest(files)
task.A
task.B
pipe(...)
pipe(...)
var gulp = require('gulp');
var imagemin = require('gulp-imagemin');
gulp.task('default', function() {
return gulp.src('img/*')
.pipe(imagemin())
.pipe(gulp.dest('min-img'));
});
gulpfile.js
gulp-imagemin
$ npm install --save-dev gulp-imagemin
var gulp = require('gulp');
var imagemin = require('gulp-imagemin');
var changed = require('gulp-changed');
gulp.task('default', function() {
return gulp.src('img/*')
.pipe(changed('min-img'))
.pipe(imagemin())
.pipe(gulp.dest('min-img'));
});
gulpfile.js
gulp-changed
$ npm install --save-dev gulp-changed
var gulp = require('gulp');
var imagemin = require('gulp-imagemin');
var changed = require('gulp-changed');
gulp.task('img-min', function() {
return gulp.src('img/*')
.pipe(changed('min-img'))
.pipe(imagemin())
.pipe(gulp.dest('min-img'));
});
gulp.task('watch', function(){
gulp.watch('img/*',['img-min']);
});
gulp.task('default', ['watch'] );
gulp.watch
var gulp = require('gulp');
var imagemin = require('gulp-imagemin');
var changed = require('gulp-changed');
var sass = require('gulp-sass');
gulp.task('img-min', function() { /* ... */ });
gulp.task('sass', function() {
return gulp.src('sass/*.sass')
.pipe(sass())
.pipe(gulp.dest('css'));
});
gulp.task('watch', function(){
gulp.watch('img/*', ['img-min']);
gulp.watch('sass/*.sass', ['sass']);
});
gulp.task('default', ['watch', 'img-min', 'sass'] );
gulp-sass
$ npm install --save-dev gulp-sass
$myColor: #FF3456;
$myMargin: 16px;
.myclass
{
background-color: $myColor;
margin: $myMargin;
div
{
background-color: darken($myColor, 50%);
margin: $myMargin / 2;
}
}
demo.sass
var gulp = require('gulp');
/* ... */
var ts = require('gulp-typescript');
gulp.task('img-min', function() { /* ... */ });
gulp.task('sass', function() { /* ... */ });
gulp.task('ts', function() {
return gulp.src('ts/*.ts')
.pipe(ts())
.pipe(gulp.dest('js'));
});
gulp.task('watch', function(){
gulp.watch('img/*', ['img-min']);
gulp.watch('sass/*.sass', ['sass']);
gulp.watch('ts/*.ts', ['ts']);
});
gulp.task('default', ['watch', 'img-min', 'sass', 'ts'] );
gulp-typescript
$ npm install --save-dev gulp-typescript
// TypeScript Array
var list:Array<string> = ["A", "B", "C"];
// ES5 Array.map()
// ES6 Arrow Function
var myLength = list.map( s => s.length );
console.log( myLength ); // 3
demo.ts
var gulp = require('gulp');
/* ... */
var mainBowerFiles = require('main-bower-files');
gulp.task('bower-main-file', function(){
return gulp.src(mainBowerFiles())
.pipe(gulp.dest("./lib"));
});
gulp.task('default', [ 'bower-main-file'] );
$ npm install --save-dev main-bower-files
var gulp = require('gulp');
gulp.task('express', function() {
var express = require('express');
var app = express();
app.use(express.static(__dirname));
app.listen(4000);
});
gulp.task('default', ['express'] );
Live Reload(1/3)
$ npm install --save-dev express
-
Express
var gulp = require('gulp');
gulp.task('express', function() {
var express = require('express');
var app = express();
app.use(require('connect-livereload')({port: 4002}));
app.use(express.static(__dirname));
app.listen(4000);
});
Live Reload(2/3)
npm install tiny-lr connect-livereload --save-dev
-
tiny-lr
-
connect-liverelad
var tinylr;
gulp.task('livereload', function() {
tinylr = require('tiny-lr')();
tinylr.listen(4002);
});
gulp.task('watch', function() {
gulp.watch('*.html', function(event){
var fileName = require('path').relative(__dirname, event.path);
tinylr.changed({
body: {
files: [fileName]
}
});
});
});
gulp.task('default', ['express', 'livereload', 'watch']);
Live Reload(3/3)
gulp-plugins
-
gulp-connect
開啟server -
gulp-concat
合併程式 -
gulp-clean
清除檔案 -
gulp-rename
重新命名檔案 -
gulp-minify-css
壓縮CSS -
gulp-jshint
JS Debug -
gulp-uglify
壓縮 JS
preprocessor
-
gulp-compass
-
gulp-less
-
gulp-jade
-
gulp-coffee
- gulp-livescript
Gulp
By Jayson Chiang
Gulp
Introduce Gulp for Advantech
- 576