Gulp 如何连接“html-minifier”大口?

qhhrdooz  于 2022-12-08  发布在  Gulp
关注(0)|答案(1)|浏览(192)

我正在使用gulp,启动时出现错误...
我该如何解决这个问题?
返回值不是函数。
我已经试了几个小时了,但我不知道出了什么问题。
也许这是在某种程度上可能使用这个插件?vinyl-source-stream

const htmlMinify = require('html-minifier').minify

function html() {
    const postcssPlugins = [
        autoprefixer({
            overrideBrowserslist: [
                '>0.25%',
                'not ie 11',
                'not op_mini all'
            ]
        }),
        pxtorem({
            rootValue: 16,
            unitPrecision: 5,
            propList: ['font', 'font-size', 'line-height', 'letter-spacing'],
            replace: false,
            mediaQuery: false,
            minPixelValue: 0,
        })
    ];
    const postcssOptions = { from: undefined }
    const filterType = /^text\/css$/
    const plugins = [
        posthtmlPostcss(postcssPlugins, postcssOptions, filterType)
    ];
    const options = {
        includeAutoGeneratedTags: true,
        removeAttributeQuotes: true,
        removeComments: true,
        removeRedundantAttributes: true,
        removeScriptTypeAttributes: true,
        removeStyleLinkTypeAttributes: true,
        sortClassName: true,
        useShortDoctype: true
    }
    return src(config.app.html)
        .pipe(include({ prefix: '@@' }))
        .pipe(posthtml(plugins))
        .pipe(htmlMinify(options))
    .pipe(dest(config.build.html))
}

exports.stream = series(clear, html, stream)
syqv5f0l

syqv5f0l1#

如果使用插件“vinyl-source-stream”。
这个问题的解决方案是以下代码。
在这段代码中,我使用了处理流的插件。
但是这段代码只转换一个文件!
你可以在npmjs上阅读关于每个插件的更多细节。
第一个

const { src, dest, series } = require('gulp');
const htmlMinify = require('html-minifier');
const vfs = require('vinyl-fs');
const source = require('vinyl-source-stream');
const map = require('map-stream');

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

function sol() {
    let minify = function(file, cb) {
        cb(null, htmlMinify.minify(file.contents.toString(), options));
    };

    return vfs
        .src(['app/index.html'])
        .pipe(map(minify))
        .pipe(source('index.html'))
        .pipe(vfs.dest('build'));
}

exports.sol = series(sol);

这就是这个问题的答案。
对于这个问题有一个更优雅的解决方案。
不需要第三方插件。我在this post中描述过。

相关问题