マメな人はバカであれ

バカなりに考えて、バカなりに行動します

技術的なことや、趣味的なことや、私生活的なことを書いてきます

gulpでutf8とshift-jisのどっちも書き出す

utf8とshift-jis、どっちでコーディングされますか?
私はutf8がほとんどです。

そもそもutf8とshift-jisってなんなん?って人に向けて

まずは文字コードをググってください。
私も専門家ではないので詳しく話せませんので…

文字コード - Google 検索

仕事でShift-jisを使うことがなかったのに…

仕事でshift-jisで納品しなきゃいけないことになってしまった。

早速、gulpでutf8からshift-jisに変換するようにしよーっと

var gulp = require("gulp"),
    jade = require("gulp-jade"),
    changed = require("gulp-changed"),
    crLfReplace = require('gulp-cr-lf-replace'),
    convertEncoding = require('gulp-convert-encoding'),
    plumber = require("gulp-plumber");


gulp.task("jade", function() {
    gulp.src(["src/jade/**/*.jade","!src/jade/**/_*.jade"])
    .pipe(plumber({errorHandler: notify.onError('<%= error.message %>')}))
        .pipe(jade({
            pretty: true
        }))
        .pipe(changed("dist", {extension: '.html'}))
        .pipe(crLfReplace({changeCode: "CR+LF"}))
        .pipe(convertEncoding({to: "shift_jis"}))
        .pipe(gulp.dest("dist/post"))
});

改行コードも指定されてたからCR+LFに変換して、いざ起動〜

shift-jisは文字化けしてしまう〜

コンパイルはできたしけど文字化けして何も確認できない!

これだからshift-jisってやつはぁ〜〜

と思ってましたが、

「shift-jisとutf-8と別々で書き出せばいいか」

って、まぁ安直ですが解決法を述べまして。

var gulp = require("gulp"),
    jade = require("gulp-jade"),
    changed = require("gulp-changed"),
    crLfReplace = require('gulp-cr-lf-replace'),
    convertEncoding = require('gulp-convert-encoding'),
    browserSync = require("browser-sync"),
    plumber = require("gulp-plumber"),
    runSequence = require("run-sequence");

//jade
gulp.task("jade", function() {
    gulp.src(["src/jade/**/*.jade","!src/jade/**/_*.jade"])
        .pipe(plumber({errorHandler: notify.onError('<%= error.message %>')}))
        .pipe(jade({
            pretty: true
        }))
        .pipe(changed("dist", {extension: '.html'}))
        .pipe(gulp.dest("dist/utf8"))
});
//shift-jis
gulp.task("jis", function() {
    gulp.src(["src/jade/**/*.jade","!src/jade/**/_*.jade"])
    .pipe(plumber({errorHandler: notify.onError('<%= error.message %>')}))
        .pipe(jade({
            pretty: true
        }))
        .pipe(changed("dist", {extension: '.html'}))
        .pipe(crLfReplace({changeCode: "CR+LF"}))
        .pipe(convertEncoding({to: "shift_jis"}))
        .pipe(gulp.dest("dist/post"))
});

// ブラウザリロード
gulp.task('reload', function () {
    browserSync.reload();
});

//監視開始
gulp.task("watch", function() {
    browserSync.init({
        online: true,
        ui: false,
        server: {
            baseDir: "./dist",
        },
        port: 2525
    });
    gulp.watch(['src/jade/**/*.jade','!src/jade/**/_*.jade'], ["jade","jis","jisPost","reload"]);
});

gulp.task('default', function(callback){
    return runSequence('clear', 'watch', callback);
});

んな感じで簡単に書きまして。
無事にutf8とshift-jisを両方書き出すことができましたと。

もっと簡単なやり方や別のやり方があるのだと思います。

ぜひともそのやり方を教えてもらいたい…