-1

次のコードは機能しません。「vinyl-source-stream」プラグインを介して「html-minifier」プラグインを「 gulp」に接続しようとしています。

なぜ私はこれをしているのですか?このページで、プラグイン「browserify」を接続できることを読みました。このコードを書きましたが、エラーが発生します。どうすれば解決できますか?

ここに画像の説明を入力

'use strict';
const { src, dest, series } = require('gulp')
const htmlMinify = require('html-minifier').minify;
const source = require('vinyl-source-stream');
const buffer = require('vinyl-buffer');

const options = {
    includeAutoGeneratedTags: true,
    removeAttributeQuotes: true,
    removeComments: true,
    removeRedundantAttributes: true,
    removeScriptTypeAttributes: true,
    removeStyleLinkTypeAttributes: true,
    sortClassName: true,
    useShortDoctype: true
};
const result = htmlMinify('frontend/*.html', options)

function test() {
    return result.bundle()
        .pipe(source('frontend/**/*.html'))
        .pipe(buffer())
        .pipe(dest('public'))
}

exports.build = series(test)
4

1 に答える 1

0

私は次のコードを書き、「html-minifier」プラグインが「gulp」で直接動作できるようになりました。const オプション
変数は 、「html-minifier」プラグイン設定です。次に、 gulp gHtmlMinifyコマンドで実行できる関数 gHtmlMinify を作成します。return src(...)は、html ファイルのパスです。.on('data', function(file) {...}各スレッドには「data」イベントがあります。「data」イベント の処理を中断します。 「data」イベントが呼び出されると、「file」 " オブジェクトには、ファイル名、ファイル パス、作業ディレクトリ、ファイルの内容などの情報が含まれています。






Buffer.from生データはBufferクラスのインスタンスに格納されます。
( file.contents
.toString() このファイルの内容は BUFFER です。toString( )メソッドは、オブジェクトを表す関数を返します。文字列に変換します。

console.log ({ // ファイルを構成する構造を出力します。
contents: file.contents, // ファイルのコンテンツ BUFFER。バッファーは文字列ではありません!
path: file.path, // ファイルへのパス.
cwd: file.cwd, // Current directory. "The directory where the gulp command was run".
base: file.base, // アスタリスクの前の値 ie app/
relative: file.relative, // アスタリスクの後の値 ie filename.html
dirname: file.dirname, // ファイル ディレクトリ.
basename: file.basename, // ファイル名.
stem: file.stem, // 拡張子なしのファイル名.
extname: file.extname // ファイル拡張子.
})

const { src, dest, series } = require('gulp');
const htmlMinify = require('html-minifier');

const options = {
    includeAutoGeneratedTags: true,
    removeAttributeQuotes: true,
    removeComments: true,
    removeRedundantAttributes: true,
    removeScriptTypeAttributes: true,
    removeStyleLinkTypeAttributes: true,
    sortClassName: true,
    useShortDoctype: true,
    collapseWhitespace: true
};

function gHtmlMinify() {
    return src('app/**/*.html')
        .on('data', function(file) {
            const buferFile = Buffer.from(htmlMinify.minify(file.contents.toString(), options))
            file.contents = buferFile;
            console.log(file);
            return;
        })
        .pipe(dest('build'))
}


exports.gHtmlMinify = series(gHtmlMinify)
于 2021-06-29T22:21:17.760 に答える