質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.58%

Gulpで、gulp-htmlminにて、エラーがでる。

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,340

miyabi_takatsuk

score 7280

前提・実現したいこと

表記の通り、Gulpにて、gulp-htmlminパッケージの実行時にエラーがでます。
実現したいことは、Gulpファイルのインストールは一つ、
複数のプロジェクトで、タスクを走らせる、といったことをしたいです。
Gulpの複数プロジェクトを走らせるのは、
下記を参考にしました。
https://www.imamura.biz/blog/27170

発生している問題・エラーメッセージ

Gulpのタスクを実行すると、下記エラーが出、中途半端に吐き出され、
途中で処理が止まってしまいます。

D:\save_data\var\www\gulp_files>gulp build-html
[14:57:25] Using gulpfile D:\save_data\var\www\gulp_files\gulpfile.js
[14:57:25] Starting 'build-html'...

events.js:163
      throw er; // Unhandled 'error' event
      ^

Error: no writecb in Transform class
    at afterTransform (D:\save_data\var\www\gulp_files\node_modules\through2\nod
e_modules\readable-stream\lib\_stream_transform.js:74:40)
    at TransformState.afterTransform (D:\save_data\var\www\gulp_files\node_modul
es\through2\node_modules\readable-stream\lib\_stream_transform.js:58:12)
    at DestroyableTransform.fileInclude [as _transform] (D:\save_data\var\www\gu
lp_files\node_modules\gulp-file-include\lib\index.js:57:9)
    at DestroyableTransform.Transform._read (D:\save_data\var\www\gulp_files\nod
e_modules\through2\node_modules\readable-stream\lib\_stream_transform.js:159:10)

    at DestroyableTransform.Transform._write (D:\save_data\var\www\gulp_files\no
de_modules\through2\node_modules\readable-stream\lib\_stream_transform.js:147:83
)
    at doWrite (D:\save_data\var\www\gulp_files\node_modules\through2\node_modul
es\readable-stream\lib\_stream_writable.js:338:64)
    at writeOrBuffer (D:\save_data\var\www\gulp_files\node_modules\through2\node
_modules\readable-stream\lib\_stream_writable.js:327:5)
    at DestroyableTransform.Writable.write (D:\save_data\var\www\gulp_files\node
_modules\through2\node_modules\readable-stream\lib\_stream_writable.js:264:11)
    at DestroyableTransform.ondata (D:\save_data\var\www\gulp_files\node_modules
\readable-stream\lib\_stream_readable.js:572:20)
    at emitOne (events.js:96:13)

該当のソースコード

使用した、gulpfile.jsと、
上記の複数プロジェクト用のJavaScriptファイルを記載します。

var CONTENTS_PATH = 'プロジェクト毎共通パス/',
    ORIGIN_PATH = '_origin';

// 各npm読み込み
var gulp = require('gulp'),
    cache = require('gulp-cached'),
    rename = require('gulp-rename'),
    extender = require('gulp-html-extend'),
    fileInclude = require('gulp-file-include'),
    glob = require('glob'),
    merge = require('merge-stream'),
    changed = require('gulp-changed'),
    runSequence = require('run-sequence'),
    htmlmin = require('gulp-htmlmin'),
    tinyping = require('gulp-tinypng-compress'),
    uglify = require('gulp-uglify'),
    uglifyjs = require('gulp-uglifyjs'),
    bSync = require('browser-sync'),
    imagemin = require('gulp-imagemin'),
    pngquant = require('imagemin-pngquant'),
    optipng = require('imagemin-optipng'),
    devBuild = (process.env.NODE_ENV !== 'production');


gulp.task('default', function() {
});


var CONFIGS = [];
glob.sync('./projects/*').forEach( function( filePath ) {
    CONFIGS.push( require( filePath ) );
});


// HTML圧縮
gulp.task('build-html', function () {
    var tasks = CONFIGS.map( config => {

        if( config.htmlmin ) {
            var compSrcList = new Array(0);
            compSrcList.push('../' + config.htmlmin.root + CONTENTS_PATH + config.htmlmin.contentsSrc + ORIGIN_PATH + '/**/*.php');
            if (typeof config.htmlmin.notList != 'undefined') {
                config.htmlmin.notList.forEach(function(nVal, nIndex){
                    compSrcList.push('!../' + config.htmlmin.root + CONTENTS_PATH + config.htmlmin.contentsSrc + ORIGIN_PATH + '/' + nVal + '/**/*.php');
                    // console.log('!../' + config.htmlmin.root + CONTENTS_PATH + config.htmlmin.contentsSrc + ORIGIN_PATH + '/' + nVal + '/**/*.php');
                });
            }

            return gulp.src(compSrcList)
                .pipe(cache('build-html'))
                .pipe(extender({annotations:true,verbose:false})) // default options 
                .pipe(fileInclude())
                .pipe(htmlmin({collapseWhitespace: true}))
                .pipe(gulp.dest('../' + config.htmlmin.root + CONTENTS_PATH + config.htmlmin.contentsSrc));
        } else {
            return gulp.src( './' );
        }
    });

    console.log('HTMLを圧縮しました。');

    return merge(tasks);
});
// プロジェクトのルートのディレクトリ名を定義
var $rootSrc = '該当プロジェクトパス/';

module.exports = {
    htmlmin: {
        root: $rootSrc,
        contentsSrc: 'views_s',
        // 下記に、圧縮したくないディレクトリ名。
        notList: [
            'comment',
            'confirm',
            'detail',
            'inquiry',
            'product'
        ]
    }

};

試したこと

エラーが出るのは、一つのプロジェクトのみで、該当プロジェクトで除外した時は、他のプロジェクトではエラーが発生しません。
試したことは、
パスの確認、パスを変えてみた、npm・Node.JS・Gulpのアップデートです。

補足情報(言語/FW/ツール等のバージョンなど)

使用マシンは、Windows 7です。

必要情報あれば、追記いたします。
何とぞよろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

すみません、自己解決しました。
対象ファイルを少なくした時に、うまく動いたので、
処理数が多すぎたため、だったと思われます。
もう少し、いい方法がないか、やってみます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.58%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る