
Gulpでの開発について
HPのコーディングって作業が多い
そんなこと思ったことありませんか?
私は常に思ってます。
正常な文書構造、SEOの重要性、デザインと構造の折り合いをつける、アニメーション、javascript、CMSの知識、ウェブマーケティング、サーバーの基本的な知識、ドメイン、DNSの知識・・・・etc
そこに流行や、最新の技術などの勉強を常にしていくとなると、時間がいくらあっても足りない!
なので私はコーディング時にどれだけ作業を高速化できるか、
無駄を排除できるかを考えてます。
そんな私の最近のコーディング時に使用しているタスクランナーの紹介をします。
gulpのインストールについて
node.jsのインストール
npmのバージョン確認
1 |
npm -v |
*ちなみにnode.jsなどのインストールにはバージョン管理ツールを入れるのをおすすめします。
Macの場合
・brew(Homebrew、nodebrew)
Windowsの場合
・nodist
インストールの仕方はググってください。
後日ブログにあげるかも・・・・
npmのバージョンアップ
macの場合
1 |
npm update -g npm |
windowsの場合
1 |
nodist npm global match |
yarnのインストール
*yarnとはFacebook社の開発したnpm互換のパッケージ管理ツールです
npmよりも高速のため、今回記入します。
1 |
npm install -g yarn |
ようやく本題、Gulpパッケージをインストールします
1 2 |
yarn init yarn add gulp |
これでコーディング予定のフォルダ内に「package.json」と「node_modules」が入っていると思います。
Gulpを使うにはgulpfile.jsというファイルが必要です。
このファイルにgulpで使用するパッケージの挙動を書きます。
ちなみに私のgulpの構成は下記です。
- gulp-sass
- gulp-autoprefixer
- gulp-plumber
- gulp-changed
- gulp-imagemin
- imagemin-jpeg-recompress
- imagemin-pngquant
- imagemin-gifsicle
- imagemin-mozjpeg
- browser-sync
- webpack
- webpack-stream
このパッケージで下記の作業をさせてます
- jsをwebpackでコンパイル
- scssをnode-sassでコンパイル
- css内に自動でAutoprefixをつける
- 画像の容量を圧縮(jpeg,jpg,png,gif)
- js,css,html,phpを保存した時点でブラウザを自動リロード
gulpを使う方法
gulpfile.jsと同じ階層にコマンドラインで移動して、コマンドを入力
1 |
yarn run gulp |
これでgulpが起動します。
gulpファイルの内容は下記に公開します
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
//プラグインの読み込み const gulp = require("gulp"); const sass = require("gulp-sass"); const autoprefixer = require('gulp-autoprefixer'); const sourcemaps = require('gulp-sourcemaps'); const plumber = require('gulp-plumber'); const changed = require('gulp-changed'); const imagemin = require('gulp-imagemin'); const imageminJpg = require('imagemin-jpeg-recompress'); const imageminPng = require('imagemin-pngquant'); const imageminGif = require('imagemin-gifsicle'); const mozjpeg = require('imagemin-mozjpeg'); const browserSync = require('browser-sync'); const folderName = ".." // 圧縮前と圧縮後のディレクトリを定義 const paths = { srcDir : 'src',// 圧縮前のディレクトリ dstDir : folderName+'/assets'// 圧縮後のディレクトリ } gulp.task('bs-reload', function () { browserSync.reload(); }); //タスクの定義 gulp.task("default", function() { // jpg,png,gif画像の圧縮タスク var srcGlob = paths.srcDir + '/**/*.+(jpg|jpeg|png|gif)'; var dstGlob = paths.dstDir; gulp.watch( srcGlob , function(){ gulp.src( srcGlob ) .pipe(changed( dstGlob )) .pipe(imagemin([ imageminPng(), imageminJpg(), imageminGif({ interlaced: false, optimizationLevel: 3, colors:180 }) ] )) .pipe(gulp.dest( dstGlob )); }); browserSync({ // proxy: "http://ドメイン.属性/", // files: [ // "../**/*.css", // "../**/*.js", // "../**/*.php", // ] server: { baseDir: folderName //対象ディレクトリ ,index : "index.html" //インデックスファイル } }); gulp.watch( folderName+"/*.html" ,['bs-reload']); //どのファイルがセーブされたらリロードするか指定 gulp.watch( folderName+"/css/*.css" ,['bs-reload']); //どのファイルがセーブされたらリロードするか指定 gulp.watch("./scss/*.scss", function(){ gulp.src("./scss/*.scss") //ファイルの参照先を指定 .pipe(plumber()) .pipe(sourcemaps.init()) .pipe(sass({ includePaths: require('node-reset-scss').includePath, outputStyle: 'expanded' }).on('error', sass.logError)) //プラグインの実行 .pipe(sourcemaps.write({includeContent: false})) .pipe(sourcemaps.init({loadMaps: true})) .pipe(autoprefixer()) .pipe(sourcemaps.write()) .pipe(gulp.dest("../css")); //処理を行ったファイルの保存先を指定 }); }); |
ちなみにこれはwordpressのコーディングでも使用可能です。
上記ファイルのserver部分をコメントアウトして、proxy部分を使えばできます。
昨日のVCCWと合わせてコーディングすると効率的ですよ!
Let’s Enjoy Coding Life!!