際際滷

際際滷Share a Scribd company logo
Gulpことはじめ
Kyohei Morimoto
Gruntの}j晒
? Gruntは弼?できそう
? みんなでプラグインをいっぱい恬った
? おれのかんがえるさいきょうgruntfileが岱羨
? gruntfileの}j晒
C 砿尖できない、iめない
C 嘛が嶷くなる
? GulpのQ伏
^Speed. Efficiency. Simplicity. ̄
Gulpの兵め圭
sudo npm install -g npm
sudo npm install -g gulp
npm init
npmのアップデ`ト
gulpのインスト`
ル
package.jsonの恬撹(もちろん返咾任OK)
Gulpの兵め圭
sudo npm install gulp@x.x.x --save-
dev
x.x.xのところは、インスト`ルしたCLIのバ`ジョン
に
栽わせる
gulpfile.jsをく┘織好をく
? 児云議な送れはgruntと匯w
1. iみzむプラグインを恷兜に峰
2. 佩いたいI尖をくsassのコンパイルとか
3. 恬ったものをg佩する
gulpfile.jsをく┘織好をく
? 児云議な送れはgruntと匯w
1. iみzむプラグインを恷兜に峰
2. 佩いたいI尖をくsassのコンパイルとか
3. 恬ったものをg佩する
I尖のき圭
stream侘塀でく
!?
streamについて
? gulp_k宀_による盾hがあります
? しくは、substack's stream handbook
streamについて
? gulp.src() //荷恬するファイルを峺協する
? .pipe(プラグイン兆) //佩いたいI尖をく
? .pipe(gulp.dest()); //竃薦したいファイルを
しているする
sassのコンパイル
var gulp = require('gulp');
var sass = require('gulp-sass');
gulp.task('sass', function () {
gulp.src('htdocs/sass/*.scss')
.pipe(sass())
.pipe(gulp.dest('./htdocs/css'));
});
gulp.task('default', ['sass']);
sassのコンパイル
var gulp = require('gulp');
var sass = require('gulp-sass');
gulp.task('sass', function () {
gulp.src('htdocs/sass/*.scss')
.pipe(sass())
.pipe(gulp.dest('./htdocs/css'));
});
gulp.task('default', ['sass']);
sassのコンパイル
var gulp = require('gulp');
var sass = require('gulp-sass');
gulp.task('sass', function () {
gulp.src('htdocs/sass/*.scss')
.pipe(sass())
.pipe(gulp.dest('./htdocs/css'));
});
gulp.task('default', ['sass']);
sassのコンパイル
var gulp = require('gulp');
var sass = require('gulp-sass');
gulp.task('sass', function () {
gulp.src('htdocs/sass/*.scss')
.pipe(sass())
.pipe(gulp.dest('./htdocs/css'));
});
gulp.task('default', ['sass']);
sassのコンパイル
var gulp = require('gulp');
var sass = require('gulp-sass');
gulp.task('sass', function () {
gulp.src('htdocs/sass/*.scss')
.pipe(sass())
.pipe(gulp.dest('./htdocs/css'));
});
gulp.task('default', ['sass']);
VS
プラグイン方
2,828
669
プラグイン方
? この2カ埖でGulpのプラグイン方は蔚になっ
ている
? 寄丘フロントエンドでやりたいことは、畠隼で
きるから寄きなoい
g佩I尖
? gulpは壼いらしい
だが、悶湖ではそれほど蛍からなかった
^By harnessing the power of node's streams you
get fast builds that don't write intermediary files
to disk. - gulpjs.com ̄
? GruntもV0.5で壼くなるっぽい
https://github.com/gruntjs/grunt-docs/blob/master/Roadmap.md
O協ファイルの}jさ
? CSS
C オ`トプレフィックス
C ファイルのY栽
C Rs
? 鮫
C Rs
? ファイルのO
赫姻顎稼岳の魁栽
module.exports = function(grunt) {
grunt.initConfig({
paths: {
css: 'htdocs/css/',
cssdist: 'htdocs/dist/css/',
img: 'htdocs/img/',
imgdist: 'htdocs/dist/img/'
},
autoprefixer: {
options: {
browsers: ['last 2 version']
},
files: {
expand: true,
flatten: true,
src: '<%= paths.css %>*.css',
dest: '<%= paths.cssdist %>pre/'
}
},
cssmin: {
compress: {
files: {
'<%= paths.cssdist %>style.min.css': ['<%= paths.cssdist %>pre/*.css']
}
}
},
imagemin: {
dynamic: {
files: [{
expand: true,
cwd: '<%= paths.img %>',
src: '**/*.{jpg,gif}',
dest: '<%= paths.imgdist %>'
}]
}
},
pngmin: {
compile: {
options: {
ext: '.png'
},
files: [{
expand: true,
cwd: '<%= paths.img %>',
src: '**/*.png',
dest: '<%= paths.imgdist %>'
}]
}
},
watch: {
css:{
files: ['<%= paths.css %>*.css'],
tasks: ['autoprefixer', 'cssmin']
},
img:{
files: ['<%= paths.img %>**/*.{png,jpg,gif}'],
tasks: ['imagemin', 'pngmin']
}
}
});
grunt.loadNpmTasks('grunt-autoprefixer');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-imagemin');
grunt.loadNpmTasks('grunt-pngmin');
grunt.registerTask('default', ['autoprefixer', 'cssmin', 'imagemin', 'pngmin']);
};
module.exports = function(grunt) {
grunt.initConfig({
paths: {
css: 'htdocs/css/',
cssdist: 'htdocs/dist/css/',
img: 'htdocs/img/',
imgdist: 'htdocs/dist/img/'
},
autoprefixer: {
options: {
browsers: ['last 2 version']
},
files: {
expand: true,
flatten: true,
src: '<%= paths.css %>*.css',
dest: '<%= paths.cssdist %>pre/'
}
},
cssmin: {
compress: {
files: {
'<%= paths.cssdist %>style.min.css': ['<%= paths.cssdist %>pre/*.css']
}
}
},
imagemin: {
dynamic: {
files: [{
expand: true,
cwd: '<%= paths.img %>',
src: '**/*.{jpg,gif}',
dest: '<%= paths.imgdist %>'
}]
}
},
pngmin: {
compile: {
options: {
ext: '.png'
},
files: [{
expand: true,
cwd: '<%= paths.img %>',
src: '**/*.png',
dest: '<%= paths.imgdist %>'
}]
}
},
watch: {
css:{
files: ['<%= paths.css %>*.css'],
tasks: ['autoprefixer', 'cssmin']
},
img:{
files: ['<%= paths.img %>**/*.{png,jpg,gif}'],
tasks: ['imagemin', 'pngmin']
}
}
});
grunt.loadNpmTasks('grunt-autoprefixer');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-imagemin');
grunt.loadNpmTasks('grunt-pngmin');
grunt.registerTask('default', ['autoprefixer', 'cssmin', 'imagemin', 'pngmin']);
};
67佩
赫顎鉛沿の魁栽
var gulp = require('gulp');
var concat = require('gulp-concat');
var prefixer = require('gulp-autoprefixer');
var minify = require('gulp-minify-css');
var imagemin = require('gulp-imagemin');
var plumber = require('gulp-plumber');
gulp.task('css', function () {
gulp.src('htdocs/css/**/*.css')
.pipe(plumber())
.pipe(prefixer('last 2 version'))
.pipe(concat('style.min.css'))
.pipe(minify())
.pipe(gulp.dest('htdocs/dist/css'));
});
gulp.task('img', function () {
gulp.src('htdocs/img/**/*')
.pipe(plumber())
.pipe(imagemin())
.pipe(gulp.dest('htdocs/dist/img'));
});
gulp.task('watch', function () {
gulp.watch('htdocs/css/**/*', ['css']);
gulp.watch('htdocs/img/**/*', ['img']);
});
gulp.task('default', ['css', 'img']);
module.exports = function(grunt) {
grunt.initConfig({
paths: {
css: 'htdocs/css/',
cssdist: 'htdocs/dist/css/',
img: 'htdocs/img/',
imgdist: 'htdocs/dist/img/'
},
autoprefixer: {
options: {
browsers: ['last 2 version']
},
files: {
expand: true,
flatten: true,
src: '<%= paths.css %>*.css',
dest: '<%= paths.cssdist %>pre/'
}
},
cssmin: {
compress: {
files: {
'<%= paths.cssdist %>style.min.css': ['<%= paths.cssdist %>pre/*.css']
}
}
},
imagemin: {
dynamic: {
files: [{
expand: true,
cwd: '<%= paths.img %>',
src: '**/*.{jpg,gif}',
dest: '<%= paths.imgdist %>'
}]
}
},
pngmin: {
compile: {
options: {
ext: '.png'
},
files: [{
expand: true,
cwd: '<%= paths.img %>',
src: '**/*.png',
dest: '<%= paths.imgdist %>'
}]
}
},
watch: {
css:{
files: ['<%= paths.css %>*.css'],
tasks: ['autoprefixer', 'cssmin']
},
img:{
files: ['<%= paths.img %>**/*.{png,jpg,gif}'],
tasks: ['imagemin', 'pngmin']
}
}
});
grunt.loadNpmTasks('grunt-autoprefixer');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-imagemin');
grunt.loadNpmTasks('grunt-pngmin');
grunt.registerTask('default', ['autoprefixer', 'cssmin', 'imagemin', 'pngmin']);
};
29佩
Y蕉どうなのよ
? 房っていたよりずっと聞いやすい
? I尖がR宜議にやすい
? チ`ムメンバ`によっては秘してみても措
いかも
? ビルドツ`ルはあくまで返粁なので、
朕議に栽わせてxkをする
Thank you for your listening.

More Related Content

Gulp ことはじめ

  • 2. Gruntの}j晒 ? Gruntは弼?できそう ? みんなでプラグインをいっぱい恬った ? おれのかんがえるさいきょうgruntfileが岱羨 ? gruntfileの}j晒 C 砿尖できない、iめない C 嘛が嶷くなる ? GulpのQ伏
  • 4. Gulpの兵め圭 sudo npm install -g npm sudo npm install -g gulp npm init npmのアップデ`ト gulpのインスト` ル package.jsonの恬撹(もちろん返咾任OK)
  • 5. Gulpの兵め圭 sudo npm install gulp@x.x.x --save- dev x.x.xのところは、インスト`ルしたCLIのバ`ジョン に 栽わせる
  • 6. gulpfile.jsをく┘織好をく ? 児云議な送れはgruntと匯w 1. iみzむプラグインを恷兜に峰 2. 佩いたいI尖をくsassのコンパイルとか 3. 恬ったものをg佩する
  • 7. gulpfile.jsをく┘織好をく ? 児云議な送れはgruntと匯w 1. iみzむプラグインを恷兜に峰 2. 佩いたいI尖をくsassのコンパイルとか 3. 恬ったものをg佩する
  • 9. !?
  • 11. streamについて ? gulp.src() //荷恬するファイルを峺協する ? .pipe(プラグイン兆) //佩いたいI尖をく ? .pipe(gulp.dest()); //竃薦したいファイルを しているする
  • 12. sassのコンパイル var gulp = require('gulp'); var sass = require('gulp-sass'); gulp.task('sass', function () { gulp.src('htdocs/sass/*.scss') .pipe(sass()) .pipe(gulp.dest('./htdocs/css')); }); gulp.task('default', ['sass']);
  • 13. sassのコンパイル var gulp = require('gulp'); var sass = require('gulp-sass'); gulp.task('sass', function () { gulp.src('htdocs/sass/*.scss') .pipe(sass()) .pipe(gulp.dest('./htdocs/css')); }); gulp.task('default', ['sass']);
  • 14. sassのコンパイル var gulp = require('gulp'); var sass = require('gulp-sass'); gulp.task('sass', function () { gulp.src('htdocs/sass/*.scss') .pipe(sass()) .pipe(gulp.dest('./htdocs/css')); }); gulp.task('default', ['sass']);
  • 15. sassのコンパイル var gulp = require('gulp'); var sass = require('gulp-sass'); gulp.task('sass', function () { gulp.src('htdocs/sass/*.scss') .pipe(sass()) .pipe(gulp.dest('./htdocs/css')); }); gulp.task('default', ['sass']);
  • 16. sassのコンパイル var gulp = require('gulp'); var sass = require('gulp-sass'); gulp.task('sass', function () { gulp.src('htdocs/sass/*.scss') .pipe(sass()) .pipe(gulp.dest('./htdocs/css')); }); gulp.task('default', ['sass']);
  • 17. VS
  • 20. g佩I尖 ? gulpは壼いらしい だが、悶湖ではそれほど蛍からなかった ^By harnessing the power of node's streams you get fast builds that don't write intermediary files to disk. - gulpjs.com ̄ ? GruntもV0.5で壼くなるっぽい https://github.com/gruntjs/grunt-docs/blob/master/Roadmap.md
  • 21. O協ファイルの}jさ ? CSS C オ`トプレフィックス C ファイルのY栽 C Rs ? 鮫 C Rs ? ファイルのO
  • 23. module.exports = function(grunt) { grunt.initConfig({ paths: { css: 'htdocs/css/', cssdist: 'htdocs/dist/css/', img: 'htdocs/img/', imgdist: 'htdocs/dist/img/' }, autoprefixer: { options: { browsers: ['last 2 version'] }, files: { expand: true, flatten: true, src: '<%= paths.css %>*.css', dest: '<%= paths.cssdist %>pre/' } }, cssmin: { compress: { files: { '<%= paths.cssdist %>style.min.css': ['<%= paths.cssdist %>pre/*.css'] } } }, imagemin: { dynamic: { files: [{ expand: true, cwd: '<%= paths.img %>', src: '**/*.{jpg,gif}', dest: '<%= paths.imgdist %>' }] } }, pngmin: { compile: { options: { ext: '.png' }, files: [{ expand: true, cwd: '<%= paths.img %>', src: '**/*.png', dest: '<%= paths.imgdist %>' }] } }, watch: { css:{ files: ['<%= paths.css %>*.css'], tasks: ['autoprefixer', 'cssmin'] }, img:{ files: ['<%= paths.img %>**/*.{png,jpg,gif}'], tasks: ['imagemin', 'pngmin'] } } }); grunt.loadNpmTasks('grunt-autoprefixer'); grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-imagemin'); grunt.loadNpmTasks('grunt-pngmin'); grunt.registerTask('default', ['autoprefixer', 'cssmin', 'imagemin', 'pngmin']); };
  • 24. module.exports = function(grunt) { grunt.initConfig({ paths: { css: 'htdocs/css/', cssdist: 'htdocs/dist/css/', img: 'htdocs/img/', imgdist: 'htdocs/dist/img/' }, autoprefixer: { options: { browsers: ['last 2 version'] }, files: { expand: true, flatten: true, src: '<%= paths.css %>*.css', dest: '<%= paths.cssdist %>pre/' } }, cssmin: { compress: { files: { '<%= paths.cssdist %>style.min.css': ['<%= paths.cssdist %>pre/*.css'] } } }, imagemin: { dynamic: { files: [{ expand: true, cwd: '<%= paths.img %>', src: '**/*.{jpg,gif}', dest: '<%= paths.imgdist %>' }] } }, pngmin: { compile: { options: { ext: '.png' }, files: [{ expand: true, cwd: '<%= paths.img %>', src: '**/*.png', dest: '<%= paths.imgdist %>' }] } }, watch: { css:{ files: ['<%= paths.css %>*.css'], tasks: ['autoprefixer', 'cssmin'] }, img:{ files: ['<%= paths.img %>**/*.{png,jpg,gif}'], tasks: ['imagemin', 'pngmin'] } } }); grunt.loadNpmTasks('grunt-autoprefixer'); grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-imagemin'); grunt.loadNpmTasks('grunt-pngmin'); grunt.registerTask('default', ['autoprefixer', 'cssmin', 'imagemin', 'pngmin']); }; 67佩
  • 26. var gulp = require('gulp'); var concat = require('gulp-concat'); var prefixer = require('gulp-autoprefixer'); var minify = require('gulp-minify-css'); var imagemin = require('gulp-imagemin'); var plumber = require('gulp-plumber'); gulp.task('css', function () { gulp.src('htdocs/css/**/*.css') .pipe(plumber()) .pipe(prefixer('last 2 version')) .pipe(concat('style.min.css')) .pipe(minify()) .pipe(gulp.dest('htdocs/dist/css')); }); gulp.task('img', function () { gulp.src('htdocs/img/**/*') .pipe(plumber()) .pipe(imagemin()) .pipe(gulp.dest('htdocs/dist/img')); }); gulp.task('watch', function () { gulp.watch('htdocs/css/**/*', ['css']); gulp.watch('htdocs/img/**/*', ['img']); }); gulp.task('default', ['css', 'img']);
  • 27. module.exports = function(grunt) { grunt.initConfig({ paths: { css: 'htdocs/css/', cssdist: 'htdocs/dist/css/', img: 'htdocs/img/', imgdist: 'htdocs/dist/img/' }, autoprefixer: { options: { browsers: ['last 2 version'] }, files: { expand: true, flatten: true, src: '<%= paths.css %>*.css', dest: '<%= paths.cssdist %>pre/' } }, cssmin: { compress: { files: { '<%= paths.cssdist %>style.min.css': ['<%= paths.cssdist %>pre/*.css'] } } }, imagemin: { dynamic: { files: [{ expand: true, cwd: '<%= paths.img %>', src: '**/*.{jpg,gif}', dest: '<%= paths.imgdist %>' }] } }, pngmin: { compile: { options: { ext: '.png' }, files: [{ expand: true, cwd: '<%= paths.img %>', src: '**/*.png', dest: '<%= paths.imgdist %>' }] } }, watch: { css:{ files: ['<%= paths.css %>*.css'], tasks: ['autoprefixer', 'cssmin'] }, img:{ files: ['<%= paths.img %>**/*.{png,jpg,gif}'], tasks: ['imagemin', 'pngmin'] } } }); grunt.loadNpmTasks('grunt-autoprefixer'); grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-contrib-imagemin'); grunt.loadNpmTasks('grunt-pngmin'); grunt.registerTask('default', ['autoprefixer', 'cssmin', 'imagemin', 'pngmin']); }; 29佩
  • 28. Y蕉どうなのよ ? 房っていたよりずっと聞いやすい ? I尖がR宜議にやすい ? チ`ムメンバ`によっては秘してみても措 いかも ? ビルドツ`ルはあくまで返粁なので、 朕議に栽わせてxkをする
  • 29. Thank you for your listening.