gulp 打包问题

发布于 2022-09-11 16:54:19 字数 1862 浏览 17 评论 0

本项目使用 gulp-replace 插件实现了 include 功能(引入公共的 header.html, footer.html 等),之前项目并未出现问题,后来随着项目变大,暴露出了路径的问题以及打包时间问题,第一次打包可以实现,但是第二次打包路径就会出现问题,而且打包的时间变得长了。功能实现代码如下:

// include 功能
function includeFn () {
    return gulpReplace(/\<include.*<\/include>/g, function (a, b) {
        var regSrc = /(src[ ]*=[ ]*['"]([^"]*)['"])/g,
            result = regSrc.exec(a),
            fileCon, src, srcReal;
        if ( !result) {
            return a;
        }
        src = result[2].trim();
        srcReal = path.resolve(path.parse($.streamFilePath).dir, src);
        if (!$[srcReal]) {
            try {
                $[srcReal] = fs.readFileSync(srcReal).toString();
            } catch (err) {
                console.log(chalk.bgRed('【呀有个错误!】:') + '当前文件路径为' + $.streamFilePath);
                console.log(err);
            }
        }
        fileCon = $[srcReal];
        // // 对选中状态处理
        // var regOn = /(on[]*=[]*['"]([\d]+)['"])/g,
        //     onResult = regOn.exec(a),
        //     num;
        // if ( onResult ) {
        //     num = parseInt(onResult[1], 10);
        // }

        return fileCon;
    });
}

// html的include功能,include处理
gulp.task('dev-html',  function () {
    return gulp.src(['src/**/*.html', '!src/**/include/*.html','!src/common/**/*.html']).
    // 只对更改的文件做操作
        pipe(gulpChanged(EVN_PRO)).
        // 获取文件绝对路径
        pipe(mapStream(function (file, cb) {
            $.streamFilePath = file.history[0];
            cb(null, file);
        })).
        pipe(gulpDebug({title: chalk.bgBlue('---编译HTML: ')})).
        pipe(includeFn()).
        pipe(gulpAbsolute({dev: 'src'})).
        pipe(gulp.dest(EVN_PRO)).
        pipe(browserSync.stream());
});

项目路径如下:
clipboard.png
希望大佬们可以帮忙看看,提些建议及思路,谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

幸福还没到 2022-09-18 16:54:19

是怎样个错乱法

落花浅忆 2022-09-18 16:54:19

感觉gulp-replace更侧重文本替换, 如果你要include公共部分不如用gulp-file-include

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文