gulp 打包问题
本项目使用 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());
});
项目路径如下:
希望大佬们可以帮忙看看,提些建议及思路,谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是怎样个错乱法
感觉
gulp-replace
更侧重文本替换, 如果你要include
公共部分不如用gulp-file-include。