我正在与Gulp合作编写一个在AngularJS中制作的网站。我正在使用HTML,JS和CSS扩展来散列文件,当我必须用散列路径替换原始路径时,我遇到了问题。
我使用gulp-batch-replace插件,替换我制作这个结构。
var replace = [ [ ‘find’, ‘replace’ ], [ ‘find2’, ‘replace2’ ], … ]
这是任务:
gulp.task('4. Hash and replace (HTML)', function () {
var src = [];
var srcHash = [];
var i = 0;
gulp.src('../app/**/*.*')
.on('data', function(file) {
src.push(getSourceJSHTML(file));
})
.pipe(hash({
"format": "{name}-{hash}{size}{ext}"
}))
.on('data', function(file) {
srcHash.push(getSourceJSHTML(file));
})
.on('data', function(file) {
replaceHTML.push([ src[i], srcHash[i] ]);
i++;
})
.pipe(count({
getFileCount: function(fileCount){
while (replaceHTML.length < fileCount) {
console.log("Waiting data...");
}
//console.log(fileCount);
//console.log(replaceHTML.length);
//console.log(replaceHTML);
gulp.src('../dist/app/**/*')
.pipe(replace(replaceHTML))
.pipe(gulp.dest('../dist/app/'));
gulp.src('../dist/*.html')
.pipe(replace(replaceHTML))
.pipe(gulp.dest('../dist/'));
}
}))
.pipe(gulp.dest('../dist/app/'));
});
我搜索app子文件夹中的所有文件。所有散列文件都被替换好了,但是我遇到了一行问题。
var replace = [ [ ... ], [ './app/shared/paginator/paginator.html', './app/shared/paginator/paginator-37164a6346174fd04b48a5aed8e8536b809.html' ], [ ... ] ]
这是具体的一行
<div ng-include="'./app/shared/paginator/paginator.html'"></div>
我有一些带有这些行的文件,有些文件被替换得很好,但我有两个文件失败了。
原始content-list.html
哈希content-list-8f699719b99971df4d92b2637ffaa7e54760.html
和
原始revoke.html
哈希revoke-2aa3968fd9037c1d5c406bee566eaa401638.html
此文件不会替换行。另一方面,我使用这一行制作一个简单的HTML,当我用简单的Gulp任务替换该行时,我遇到了这个问题。
原始
<div ng-include="'./app/shared/paginator/paginator.html'"></div>
代替
<div ng-include="'//app/shared/paginator/paginator/html'"></div>
问题不在于异步任务,我认为这也不是正则表达式问题(想到/)
我使用WebStorm,有时(如果我运行100次或更少的任务,我解决了一次此问题)当我使缓存无效并重新启动问题在第一次执行时解决但如果我再次运行任务则失败。
问候。
感谢所有社区。 p>