2016年6月21日火曜日

SourceTreeとBacklogを連携させてみよう

今回はSourceTreeとBacklogを連携させてみましょう。

過去記事で構築したgulpを使ったコーディング環境を
SourceTreeとBacklogで同期させてみたいと思います。


過去記事はこちら

【1】Backlogのフリープランに申込みしましょう。

下記URLにアクセスし、必要事項を記入しましょう。

※数人しか関わらない小規模案件ならフリープランで十分かと思います。

 Backlogお申込みフォーム



【2】プロジェクトを追加しましょう。

Backlogのフリープランに申込ができたら、ダッシュボードページからプロジェクトを追加しましょう。


プロジェクト名を練習用に、プロジェクトキーをPRAにしました。


【3】Gitを有効にしリポジトリを作成しましょう。

プロジェクトを追加したらプロジェクト設定画面からGitを有効にしリポジトリを作成しましょう。

[ホーム画面]

①プロジェクト設定をクリック



[プロジェクト設定画面]

②左メニューのGitをクリック

③このプロジェクトでGitを使うボタンをクリック



④リポジトリを追加するをクリック



⑤リポジトリ名を入力しリポジトリを作成するボタンをクリック

※practiceにしました。



これでpracticeリポジトリが作成されました。





【4】SourceTreeからBacklogへプッシュしてみましょう。

先ほどのBacklogページからHTTPのURLをコピーします。

※とりま個人で使う分にはHTTPでOKだと思います。



SourceTreeを立ち上げ、右側の設定アイコンをクリック。



追加ボタンをクリック。



リモート名とURL/パスを入力します。

リモート名はbacklogにしました。

URL/パスはHTTPのURLを貼り付けます。



OKボタンをクリックするとユーザーネームとパスワードを聞かれると思いますので、
BacklogのユーザIDとパスワードを入力しましょう。
(プッシュするタイミングで聞かれる場合もあるみたいです。)

SourceTreeのリモート一覧にbacklogが作成されたと思います。



これでBacklog側にプッシュできる環境が整いました。

それではプッシュしてみましょう。

プッシュアイコンをクリック



プッシュするブランチを選択しOKボタンをクリックしましょう。



最初はdevelopとmaster両方をプッシュしておきます。

developは「開発をおこなうためのブランチ」 なので、featureブランチでの作業が終わりdevelopにマージしたタイミングでプッシュすればいいかと思います。

masterは「リリースしたデータを置いておくブランチ」なので、releaseブランチやhot-fixブランチからmasterへのマージが完了したタイミングでプッシュしておけばいいかと思います。


プッシュが成功するとBacklog側のpracticeリポジトリにdevelopとmasterブランチが作成されていますので、これでSourceTreeとBacklogの連携が完了しました。


ここまでで以下のコーディング環境が整いました。

  • gulpでの自動化
  • 作業フォルダと出力フォルダの分離化
  • 作業フォルダをGitとSourceTreeでバージョン管理
  • SourceTreeでGit Flowを使った開発手法導入
  • SourceTreeとBacklogを連携してプロジェクトとして管理

どうでしたでしょうか?

これでBacklogでユーザーを追加すれば、複数人でリポジトリの共有ができるようになりました。

個人で使ったり、少人数しか関わらない案件なら
とりまフリープランで試すのもアリかと思います。



ブログランキング・にほんブログ村へ ブログランキング

ブログ王ランキングに参加中!

2016年6月20日月曜日

gulpを使ったコーディング環境をGitとSourceTreeで管理してみよう

今回はgulpを使ったコーディング環境をGitとSourceTreeで管理してみようです。
過去記事で構築したgulpを使ったコーディング環境を
GitとSourceTreeで管理してみたいと思います。

GitとSourceTreeがインストールされている事と
過去記事のgulp環境を構築していることを前提としていますので
もしまだの方は先にGitとSourceTreeをインストールし、gulp環境を構築してみましょう。

※SourceTreeのインストールは結構手間がかかった記憶がありますので
諦めずにググりながらインストールしてみてください。


過去記事はこちら


【1】gulp環境構築の記事で作成したsampleフォルダを開きます。

sampleフォルダに新しくworkフォルダを作成しgulp関連ファイルと作業フォルダ格納します。

htmlフォルダ以外をworkフォルダに移動ですね。

sampleフォルダ内は以下のようになりました。


【2】gulpfile.jsを修正して出力先を変更しましょう。

workフォルダに移動したgulpfile.jsファイルに記述している各タスクの出力先のパスを変更します。

※workフォルダの中に移動したのでhtmlフォルダまでのパスが変わります。

例)
[変更前]
.pipe(gulp.dest("./html/css"))

[変更後]
.pipe(gulp.dest("../html/css"))

上記のように6個所変更しましょう。


(変更後のgulpfile.js)

var gulp = require("gulp");
var sass = require("gulp-sass");
var autoprefixer = require("gulp-autoprefixer");
var browserSync = require("browser-sync");
var imagemin = require('gulp-imagemin');
var notify = require('gulp-notify');
var plumber = require('gulp-plumber');


gulp.task("sass", function() {
    gulp.src("gulp/sass/**/*scss")
        .pipe(plumber({
            errorHandler: notify.onError("Error: <%= error.message %>")
        }))
        .pipe(sass().on("error", sass.logError))
        .pipe(sass({outputStyle: 'expanded'}))
        .pipe(autoprefixer())
        .pipe(gulp.dest("../html/css"))
        .pipe(browserSync.stream())
        .pipe(notify({
            title:'Sassをコンパイルしました。',
            message:new Date()
       }));
});

//html
gulp.task("html", function () {
    gulp.src("gulp/**/*.html")
        .pipe(gulp.dest("../html/"))
        .pipe(browserSync.stream())
        .pipe(notify({
            title:'HMTLをコンパイルしました。',
            message:new Date()
       }));
});

//js
gulp.task("js", function () {
    gulp.src("gulp/js/**/*.js")
        .pipe(gulp.dest("../html/js/"))
        .pipe(browserSync.stream())
        .pipe(notify({
            title:'JSをコンパイルしました。',
            message:new Date()
       }));
});

//img
gulp.task('jpg', function() {
    gulp.src('gulp/**/*.jpg')
        .pipe(imagemin())
        .pipe(gulp.dest('../html/'))
        .pipe(browserSync.stream());
});

gulp.task('png', function() {
    gulp.src('gulp/**/*.png')
        .pipe(imagemin())
        .pipe(gulp.dest('../html/'))
        .pipe(browserSync.stream());
});

gulp.task('default', function() {
    browserSync.init({
        server: {
            baseDir: "../html"
        },
        // external 指定すると、実行時のアクセスURLがIPアドレス指定側で開くことができる
        open: 'external',
    });
    gulp.watch(['gulp/sass/**/*.scss'],["sass"]);
    gulp.watch(['gulp/**/*.html'],["html"]);
    gulp.watch(['gulp/**/*.js'],["js"]);
    gulp.watch(['gulp/**/*.jpg'],["jpg"]);
    gulp.watch(['gulp/**/*.png'],["png"]);
});


【3】動作確認をしてみましょう。

コマンドプロンプトでworkフォルダの階層まで移動しましょう。

※コマンドプロントにcd を入力してworkフォルダをドラッグ&ドロップ。

移動したらgulpと入力してください。

そうするとブラウザが立ち上がりhtmlフォルダのindex.htmlが表示されます。

※表示されない場合は修正したパスを見直してみましょう。

問題なく表示されたらworkフォルダ内に移動したgulpフォルダ内htmlやsassを修正してみて
htmlフォルダのファイルにも修正が反映されているか確認しましょう。


【3】SourceTreeに新規でリポジトリを作ってみましょう。

SoruceTreeの使い方は下記サイトなどに詳しく載っているので確認してみましょう。


【連載Git入門目次】ほんとは簡単?SourceTreeでGitを始めよう!


SourceTreeを開き左上の「新規 / クローンを作成する」からリポジトリを作りましょう。

「新規 / クローンを作成する」クリック
↓
「新規リポジトリを作成」タブを選択

保存先のパス:をsampleフォルダ内に作ったworkフォルダにし、
ブックマークを任意の名前にしましょう。



リポジトリが作成できたらコミットしましょう。コミット名はファーストコミットにしました。

コミットしたらブランチにmasterが作られていると思います。




【4】Git flowを使ってみよう。

独自で運用ルールを作るのもいいのですが結構大変ですよね。

Git flowを使って運用したほうが開発効率がいいのでおすすめです。

Git flowの使い方は下記サイトで確認してみましょう。

非常に分かりやすく説明されています。


Gitを最大限に活用できる「Git flow」で、効率よく開発を進めよう!


まず始めに左上の「リポジトリ」から「Git Flow」 → 「リポジトリを初期化」を選択し
そのままOKをクックします。

するとmasterの上にdevelopが自動で作られます。

これでGit Flowを使う準備ができましたので、上記のサイトで使い方を確認してください。


ここまでで以下のコーディング環境が整いました。
  • gulpでの自動化
  • 作業フォルダと出力フォルダの分離化
  • 作業フォルダをGitとSourceTreeでバージョン管理
  • SourceTreeでGit Flowを使った開発手法導入

どうでしたでしょうか?

初期設定で結構つまずいてしまったりすのですが、
色々なサイトで情報を集めながら自分が使いやすいコーディング環境を構築して
効率よくコーディングし、作業時間を少しでも減らせることを考えれば
各ツールの初期設定も頑張れるかと思います。




ブログランキング・にほんブログ村へ ブログランキング

ブログ王ランキングに参加中!

2016年6月16日木曜日

Photoshopのスライスを使わない書き出し方

今回はPhotoshopのスライスツールを使わずに画像を書き出してみましょう。
みなさんはPhotoshopのスライスツールは使っていますか?

自分の場合はPhotoshopで上がってきたデザインから画像パーツを書き出すときは
ほとんどスライスツールは使いません。

ドロップシャドウとか多様されている場合にスライスツールを使うと非常に手間がかかり、
たとえCSSでシャドウをいれるにしてもレイヤーからシャドウだけ消したりと
結構大変です。

それではどうやってスライスツールを使わずに書き出すのかというと
1枚物の画像にして選択ツールを使って書き出します。

順を追っていきましょう。

例えば下記のようなデザインがデザイナーから上がってきたとします。


 


このデザインでロゴとボタンを画像で書き出したい場合には
まず背景を非表示にします。




背景を非表示にしたら、レイヤーで分かれているデザインを表示部分をスタンプ
(Ctrl+Shift+Alt+Eキー)で1枚物の画像にします。

この場合一番上のレイヤーでかつ表示されているレイヤーを選択してから
Ctrl+Shift+Alt+Eキーで表示部分をスタンプしましょう。

すると選択レイヤーの上に1枚物のレイヤーが作成されます。

続いて1枚物のレイヤーを選択し、長方形選択ツールでロゴが全て入るように囲みましょう。



分かるでしょうか?ロゴ画像を選択ツールで囲んでいます。


選択ツールで囲んだらコピー(Ctrl+C)して新規(Ctrl+N)そのままOKでエンターを押すと
下記のように新しいドキュメントが作成されます。




そこでペースト(Ctrl+V)すればロゴ画像だけが抜き出せました。



あとはこれを書き出せばロゴ画像パーツの完成です。

自動で画像に合わせて新規ドキュメントを作ってくれるのでスライスする手間が省けましたね。


ドロップシャドウがかかったボタン画像も同じようにドロップシャドウも含めて選択ツールで
囲んでやれば自動でサイズ調整して新規ドキュメントを作ってくれます。




どうでしたでしょうか?

パーツごとにしっかりとデザインしてくれるデザイナーだと書き出しが表示に簡単にできます。





ブログランキング・にほんブログ村へ ブログランキング

ブログ王ランキングに参加中!

2016年6月10日金曜日

CSSの忘備録を作ろう

こんにちは、ミスターXです。

前回はSassの忘備録を作りましたので、今回はCSSの忘備録を作りましょう。


【1】スマホで画像保存を禁止するコード

jqueryを使って画像の上に透過GIFなどを乗せたりと色々な対応策はあるとは思うのですが、
一応いれておきましたよレベルでいい場合は下記を使います。

/* 画像保存禁止処理 */
section {
    -webkit-user-select:none;
    -khtml-user-select:none;
    -moz-user-select:none;
    -ms-user-select:none;
    -o-user-select:none;
    user-select:none;
    -webkit-user-drag:none;
    -khtml-user-drag:none;
    -webkit-touch-callout:none;
}


【2】スマホでリンクを無効にするコード

これはタブボタンなどのナビでよく使います。

例えばナビボタン全てにリンクを付けて、該当ページのボタンだけリンク無効にすれば
わざわざリンクを消したり、リンクをつけたりしなくていいのでリンクミスも減らせたりします。

※注意点として段階リリースなどでリリース前にページがサーバにUPされていて
リンク先のURLはわかっているけど、
まだ公開はしないでねという時には使わないようにしましょう。
ソース見たらリンク先わかっちゃいますからねw

/* リンク無効 */
a {
    pointer-events:none;
    cursor:default;
    -webkit-tap-highlight-color:rgba(0,0,0,0)
}


【3】文字は透過せず、背景のみを透過する

これはボックス内のテキストには透過を適用せず背景のみを透過する場合に使います。

あまり使用頻度は高くないですが念のためにw

/* 文字は透過せず、背景のみを透過する */
section {
    background-color:rgba(赤,緑,青,数値);
}


【4】透過する

これはロールオーバー画像がない場合によく使いますね。

/* 透過する */
a:hover img {
    filter:alpha(opacity=50);
    -moz-opacity:0.5;
    opacity:0.5;
}


【5】文字が横幅より長い場合・・・として表示する

最近ではあまり使われなくなってますが、
横幅を超えた長い文字は・・・で表示させたい場合に使います。

/* 省略符号「…」をつける */
p {
    width:横幅;
    overflow:hidden;
    white-space:nowrap;
    text-overflow:ellipsis;
    -webkit-text-overflow:ellipsis;
    -o-text-overflow:ellipsis;
}


【6】背景画像を複数重ねる

これは背景に複数の画像を使用したい場合に使います。

デザイン上どうしても背景を切り分けて複数してなくてはいけない場合に使うのですが
これもあまり使用頻度は高くないように思います。

※スマホで使用する場合は必ず背景の画像サイズは指定してあげましょう。

/* 背景を複数重ねる */
section {
    background-image:
    url(/img/top/pw_bottom.png),
    url(/img/top/pw_back.png);
    background-repeat:
    no-repeat,
    repeat-y;
    background-position:
    bottom left,
    top left;
    -webkit-background-size:100% auto;
    -moz-background-size:100% auto;
    -o-background-size:100% auto;
    -ms-background-size:100% auto;
    background-size:100% auto;
}


【7】パディングとボーダーを幅と高さに含める

これは指定した幅や高さの中にパディングとボーダーを含めて表示してくれます。

いちいち指定幅からパディングやボーダーの幅を引かなくてもいいので結構便利です。

Xはスマホでボックスにボーダーを使う場合には必ずいれています。

これを指定しておけば予期せぬブラウザの横ズレや段落ちなどをあらかじめ回避できたりします。

※この指定を後入れすると逆にレイアウトが崩れたりしますので注意です。

/* パディングとボーダーを幅と高さに含める */
section {
    -webkit-box-sizing:border-box;
    -moz-box-sizing:border-box;
    -ms-box-sizing:border-box;
    -o-box-sizing:border-box;
    box-sizing:border-box;
    border:solid 1px #ccc;
}


【8】ボックスの横並び

ボックスの横並び方法は色々あると思うのですが
スマホのページャーなどでよく使ってました。

ページャーはクライアントやディレクターによってはトリッキーな要求があったりしますので
下記を基本にして要求に合うようにコードを追加したりします。

※ページャーに関しては開発側で動的に表示させたりするので
コーディング前にデザインを基にして開発側と認識のすり合わせを行いましょう。

/* ボックスの横並び */
ul {
    display:-webkit-box;
    display:-moz-box;
    display:-ms-box;
    display:-o-box;
    display:box;
    width:100%; /* firefoxで横幅を広げる指定 */
}

li {
    width:100%;
    -webkit-box-flex:1;
    -moz-box-flex:1;
    -o-box-flex:1;
    -ms-box-flex:1;
    box-flex:1;
}


【9】角丸とボックスシャドウ

下記は角丸にボックスシャドウを指定した場合です。

昔のAndroid端末で角丸を使うとシャギー(ギザギザ)が出たりするので
ボックスシャドウと併用してシャギーが目立たないように調整したりします。

/* 角丸 */
section {
    -webkit-border-radius:10px 10px 10px 10px;
    -moz-border-radius:10px 10px 10px 10px;
    -ms-border-radius:10px 10px 10px 10px;
    -o-border-radius:10px 10px 10px 10px;
    border-radius:10px 10px 10px 10px;
    -webkit-box-shadow:#6e5525 0px 0px 2px 0;
    -moz-box-shadow:#6e5525 0px 0px 2px 0; /* color, h-offset, v-offset, blur, spread */
    -ms-box-shadow:#6e5525 0px 0px 2px 0; /* color, h-offset, v-offset, blur, spread */
    -o-box-shadow:#6e5525 0px 0px 2px 0; /* color, h-offset, v-offset, blur, spread */
    box-shadow:#6e5525 0px 0px 2px 0; /* is optional */
}


どうでしたでしょうか?
上記のように自分が過去にコーディングしたコードを忘備録として残しておいて、
いつでも使えるようにまとめておけばコピペして足りないコードを足したりすれば
作業時間が短縮できたりしますのでSassの忘備録と合わせて用意しておけば
意外と便利に使えるのではないでしょうか。



次回は「Photoshopのスライスを使わない書き出し方」です。




ブログランキング・にほんブログ村へ ブログランキング

ブログ王ランキングに参加中!

2016年6月7日火曜日

Sassの便利な記法をまとめて忘備録にしよう

今回はSassの忘備録を準備しましょう。
Sassでコーディングをしていると、
どうしても使用頻度が少ないコードを忘れがちなので
いつでも使えるように自分なりにまとめて一覧を作ってみました。

まずはSassをCSSに変換してくれるサイトにアクセスしブックマークしておきましょう。

http://www.sassmeister.com/

SassがどのようにCSSに変換されるかが確認できます。

上記サイトの左側にSassを記述し、どのようにCSSに変換されるか
確認しながらSaaa忘備録一覧を作っていきます。


【以下からSassコード】

@charset "UTF-8";

/* &で親セレクタを参照 */
/*
.link ←参照される親セレクタ{
  background:#000;
  a & ←親セレクタを参照する記号 {
    color:#fff;
  }
}
*/
.link {
  background:#000;
  a & {
    color:#fff;
  }
}

/* クラスごとに書式を変更 */
ul li {
    line-height:1.4;
    &.first {
        color:#f00;
    }
    &.second {
        color:#ff0;
    }
    &.last {
        color:#0ff;
    }
}

/* ロールオーバー */
ul li {
    line-height:1.4;
    a {
        &:hover {
            text-decoration:underline;
        }
        &:active {
            color:#f00;
        }
    }
}

/* プロパティ名のネスト */
h1 {
    margin: {
        top:10px;
        right:20px;
        bottom:15px;
        left:0;
    }
    border: {
        left:solid 4px #f00;
        bottom:solid 1px #ddd;
    }
}

/* グローバル変数 */
$haba:1200px;
$iro:#fff;

#content-area {
    width:$haba;
    background:$iro;
}

/* 変数を使って文字列を指定 */
$f: "/img/icon/";

ul li {
    .first {
        background:url(#{$f}icon1.png) no-repeat 0 0;
    }
    .second {
        background:url(#{$f}icon2.png) no-repeat 0 0;
    }
    .last {
        background:url(#{$f}icon3.png) no-repeat 0 0;
    }
}

/* ローカル変数 */
div {
    $iro:#000;
    background:$iro;
    border:solid 1px $iro;
}

/* ローカル変数をグローバル変数にする場合 */
div {
    $iro:#fff !global;
    padding:20px;
}

p {
    color:$iro;
}

/* 数式を使った幅指定(300px) 記号の前後に半角スペ必須*/
$space:10px;
$waku:1px;

div {
    width:300px - ($space + $waku) * 2;
    padding:0 $space;
    border:solid $waku #000;
}

/* 割り算の場合は()で囲む */
div {
  width:(300px / 2);
}

/* 変数と数式を使って三等分に分ける */
/* 三等分の数式
(幅 - スペースの幅 * スペースの数) / 分ける数
*/
#nav-area {
    $haba:900px;
    $space:15px;
    width:$haba;
    ul {
        width:$haba;
        position:relative;
        &:after {
            display:block;
            content:"";
            clear:both;
        }
    }
    li {
      float:left;
        width:($haba - $space * 4) / 3;
        margin: {
            left:$space;
        }
    }
}

/* よく使う書式を設定(透過例) */
@mixin touka {
    filter:alpha(opacity=50);
    -moz-opacity:0.5;
    opacity:0.5;
}

a:hover img {
    @include touka;
}


これで一通りのSass一覧ができましたので
適当に名前をつけたフォルダ(コーディングメモ等)を作ってその中にsass.scssファイルを作り
コード一覧をコピーし保存しておきましょう。


Sassには他にも便利な記法がたくさんありますので
使えそうだなという記法を見つけたら都度書き足したり修正していけばいいかと思います。



次回は「CSSの忘備録を作ろう」です(/・ω・)/




ブログランキング・にほんブログ村へ ブログランキング

ブログ王ランキングに参加中!

2016年6月6日月曜日

gulpのメッセージ表示とエラー時監視を止めない(Windows)

今回はメッセージ表示とエラー時監視を止めないです。
下記サイトを参考にさせていただきました。


【1】前回作成したsampleフォルダ内のgulpfile.jsを開きます。

下記を追記し

var notify = require('gulp-notify');
var plumber = require('gulp-plumber');

タスクを下記に修正します。

gulp.task("sass", function() {
    gulp.src("gulp/sass/**/*scss")
        .pipe(plumber({
            errorHandler: notify.onError("Error: <%= error.message %>")
        }))
        .pipe(sass().on("error", sass.logError))
        .pipe(sass({outputStyle: 'expanded'}))
        .pipe(autoprefixer())
        .pipe(gulp.dest("./html/css"))
        .pipe(browserSync.stream())
        .pipe(notify({
            title:'Sassをコンパイルしました。',
            message:new Date()
       }));
});

//html
gulp.task("html", function () {
    gulp.src("gulp/**/*.html")
        .pipe(gulp.dest("html/"))
        .pipe(browserSync.stream())
        .pipe(notify({
            title:'HMTLをコンパイルしました。',
            message:new Date()
       }));
});

//js
gulp.task("js", function () {
    gulp.src("gulp/js/**/*.js")
        .pipe(gulp.dest("html/js/"))
        .pipe(browserSync.stream())
        .pipe(notify({
            title:'JSをコンパイルしました。',
            message:new Date()
       }));
});


(追記&修正後)
var gulp = require("gulp");
var sass = require("gulp-sass");
var autoprefixer = require("gulp-autoprefixer");
var browserSync = require("browser-sync");
var imagemin = require('gulp-imagemin');
var notify = require('gulp-notify');
var plumber = require('gulp-plumber');


gulp.task("sass", function() {
    gulp.src("gulp/sass/**/*scss")
        .pipe(plumber({
            errorHandler: notify.onError("Error: <%= error.message %>")
        }))
        .pipe(sass().on("error", sass.logError))
        .pipe(sass({outputStyle: 'expanded'}))
        .pipe(autoprefixer())
        .pipe(gulp.dest("./html/css"))
        .pipe(browserSync.stream())
        .pipe(notify({
            title:'Sassをコンパイルしました。',
            message:new Date()
       }));
});

//html
gulp.task("html", function () {
    gulp.src("gulp/**/*.html")
        .pipe(gulp.dest("html/"))
        .pipe(browserSync.stream())
        .pipe(notify({
            title:'HMTLをコンパイルしました。',
            message:new Date()
       }));
});

//js
gulp.task("js", function () {
    gulp.src("gulp/js/**/*.js")
        .pipe(gulp.dest("html/js/"))
        .pipe(browserSync.stream())
        .pipe(notify({
            title:'JSをコンパイルしました。',
            message:new Date()
       }));
});

//img
gulp.task('jpg', function() {
    gulp.src('gulp/**/*.jpg')
        .pipe(imagemin())
        .pipe(gulp.dest('html/'))
        .pipe(browserSync.stream());
});

gulp.task('png', function() {
    gulp.src('gulp/**/*.png')
        .pipe(imagemin())
        .pipe(gulp.dest('html/'))
        .pipe(browserSync.stream());
});

gulp.task('default', function() {
    browserSync.init({
        server: {
            baseDir: "./html"
        },
        // external 指定すると、実行時のアクセスURLがIPアドレス指定側で開くことができる
        open: 'external',
    });
    gulp.watch(['gulp/sass/**/*.scss'],["sass"]);
    gulp.watch(['gulp/**/*.html'],["html"]);
    gulp.watch(['gulp/**/*.js'],["js"]);
    gulp.watch(['gulp/**/*.jpg'],["jpg"]);
    gulp.watch(['gulp/**/*.png'],["png"]);
});

※追記したら保存を忘れないようにw


【2】通知プラグインをインストール

コマンドプロントでsampleディレクトリまで移動します。

※コマンドプロントにcdと半角スペースを記述してsampleフォルダをドラッグ&ドロップでエンター

(コマンドプロンプト表示例)
C:\Users\(ユーザ名)\Desktop\sample>

続いて下記コマンドを入力します。

※もしgulpが実行中なら終了させてから入力してください。

(入力コマンド)
npm i gulp-notify --save-dev


【3】エラー時監視を止めないプラグインをインストール

続けて下記コマンドを入力しましょう。

(入力コマンド)
npm i gulp-plumber --save-dev


【4】動作確認

(入力コマンド)
gulp


作業フォルダ内(gulpフォルダ)のhtmlとscssを修正し、保存後、
デスクトップの右上にメッセージが表示されればOK

続いてscssファイルに適当に文字列をいれて、エラーを出してみましょう。

例えば下記みたいにいれてみてください。

p {
    background:#f00;
}

aaaaaaaaaaa

するとデスクトップの右上にエラーが表示され
コマンドプロントにもエラーが表示されましたでしょうか?

文字列のaaaaaaaaaaaを削除し、再度保存してみましょう。

右上にコンパイルメッセージが表示されればOK。


これでgulpで下記の事ができるようになりました。
  • SassからCSSへの自動変換
  • 書き出したCSSの見た目調整
  • ベンダープレフィックス自動付与
  • ブラウザ同期
  • 画像圧縮
  • メッセージ表示
  • エラー時監視を止めない
まだまだ便利なプラグインがあるのですがとりまこれでgulpを使ったコーディング環境が整いました。




次回は「Sassの便利な記法をまとめて忘備録にしよう」です(/・ω・)/



ブログランキング・にほんブログ村へ ブログランキング

ブログ王ランキングに参加中!

gulpで画像圧縮してみた(Windows)

今回はgulpで画像を自動圧縮してみましょう。
下記サイトを参考にさせていただきました。


前回は結構ボリュームがあったので今回はサクッといってみましょう(∩´∀`)∩


【1】前回作成したsampleフォルダ内のgulpfile.jsを開きます。

下記を追記します。

var imagemin = require('gulp-imagemin');

と

//img
gulp.task('jpg', function() {
    gulp.src('gulp/**/*.jpg')
        .pipe(imagemin())
        .pipe(gulp.dest('html/'))
        .pipe(browserSync.stream());
});

gulp.task('png', function() {
    gulp.src('gulp/**/*.png')
        .pipe(imagemin())
        .pipe(gulp.dest('html/'))
        .pipe(browserSync.stream());
});

と

gulp.watch(['gulp/**/*.jpg'],["jpg"]);
gulp.watch(['gulp/**/*.png'],["png"]);

を追記します。

(追記後)
var gulp = require("gulp");
var sass = require("gulp-sass");
var autoprefixer = require("gulp-autoprefixer");
var browserSync = require("browser-sync");
var imagemin = require('gulp-imagemin');

gulp.task("sass", function() {
    gulp.src("gulp/sass/**/*scss")
        .pipe(sass())
        .pipe(sass({outputStyle: 'expanded'}))
        .pipe(autoprefixer())
        .pipe(gulp.dest("./html/css"))
        .pipe(browserSync.stream());
});

//html
gulp.task("html", function () {
    gulp.src("gulp/**/*.html")
        .pipe(gulp.dest("html/"))
        .pipe(browserSync.stream())
});

//js
gulp.task("js", function () {
    gulp.src("gulp/js/**/*.js")
        .pipe(gulp.dest("html/js/"))
        .pipe(browserSync.stream())
});

//img
gulp.task('jpg', function() {
    gulp.src('gulp/**/*.jpg')
        .pipe(imagemin())
        .pipe(gulp.dest('html/'))
        .pipe(browserSync.stream());
});

gulp.task('png', function() {
    gulp.src('gulp/**/*.png')
        .pipe(imagemin())
        .pipe(gulp.dest('html/'))
        .pipe(browserSync.stream());
});

gulp.task('default', function() {
    browserSync.init({
        server: {
            baseDir: "./html"
        },
        // external 指定すると、実行時のアクセスURLがIPアドレス指定側で開くことができる
        open: 'external',
    });
    gulp.watch(['gulp/sass/**/*.scss'],["sass"]);
    gulp.watch(['gulp/**/*.html'],["html"]);
    gulp.watch(['gulp/**/*.js'],["js"]);
    gulp.watch(['gulp/**/*.jpg'],["jpg"]);
    gulp.watch(['gulp/**/*.png'],["png"]);
});

※追記したら保存を忘れないようにw


【2】画像圧縮プラグインをインストール

コマンドプロントでsampleディレクトリまで移動します。

※コマンドプロントにcdと半角スペースを記述してsampleフォルダをドラッグ&ドロップでエンター

(コマンドプロンプト表示例)
C:\Users\(ユーザ名)\Desktop\sample>

続いて下記コマンドを入力します。

(入力コマンド)
npm install gulp-imagemin --save-dev

インストール後にgulpと入力し実行しましょう。


【3】gulpフォルダ(作業フォルダ)内のimgフォルダに適当にネットから落としてきた画像を格納します。

下記サイトの写真(JPG)とベクター画像(PNG)を適当に落としてきましょう。

無料の写真 - Pixabay


jpgとpng画像を落としたらimgフォルダに格納します。

格納後コマンドプロントに圧縮%など表示され、
htmlフォルダ(出力フォルダ)にimgフォルダと圧縮された画像が出力されていればOK

これで作業フォルダ内のimgフォルダに画像を格納した時に
自動で出力フォルダに圧縮画像を生成してくれるようになりました。



次回は「gulpのメッセージ表示とエラー時監視を止めない(Windows)」です。




ブログランキング・にほんブログ村へ ブログランキング

ブログ王ランキングに参加中!