Я сталкиваюсь со следующей проблемой при использовании плагинов gulp-rev-all и gulp-rev-delete-original:
Каждый раз, когда я запускаю приведенный ниже код, я получаю объединенные имена файлов, например, в пути к файлу:
Первый прогон gulp: CategoriesIcon.js ---> преобразуется в CategoriesIcon.c7eab21d.js
Второй прогон gulp: CategoriesIcon.c7eab21d.js ---> преобразуется в CategoriesIcon.c7eab21d.c7eab21d.js (или categoryIcon.c7eab21d.ae32ea11.js, если содержимое файла изменилось)
И так далее ...
Что я хочу, если я запускаю код в первый разЯ получу categoryIcon.c7eab21d.js и во второй раз, если содержимое файла не изменилось: categoryIcon.c7eab21d.js, и если оно изменилось categoryIcon.a32ae53s.js и так далее ... Я просто хочуизбавьтесь от этих сцепленных хэшей и получите уникальный хеш в имени файла.
// Imports
const gulp = require('gulp');
const revDelete = require('gulp-rev-delete-original');
const revAll = require("gulp-rev-all");
gulp.task('cacheBusting-hashFiles', function(){
// Get files we want to hash (namefiles)
gulp.src([
'src/app/commons/components/**/*.{js,html}'
])
// Generates and concatenate a hash to the file names and update references
.pipe(revAll.revision())
// Delete files previous files without hash(**THIS IS NOT WORKING FOR SOME REASON**)
.pipe(revDelete())
// New hashed files destination
.pipe(gulp.dest('src/app/commons/components/'));
})
Попытался также удалить хеш, если он уже существует, поэтому удалите его и добавьте новый.Он делает все идеально (создает новый хешированный файл с одним хешем (например, categoryIcon.847f13f5.js), но не удаляет файл со старым хешем (то есть categoryicon.2d16f215.js), поэтому в итоге есть 2 файла сдругой хеш (categoryIcon.847f13f5.js и Categoriesicon.2d16f215.js), я думаю, в этом случае, это в основном потому, что когда я переименовываю файл, revDelete () указывает на старый файл (перед переименованием), а не напереименован один:
// Imports
const gulp = require('gulp');
const revDelete = require('gulp-rev-delete-original');
const revAll = require("gulp-rev-all");
const rename = require('gulp-regex-rename');
gulp.task('cacheBusting-hashFiles', function(){
// i.e.: Extracts .847f13f5 from categories.test1234.847f13f5
const filenameHashRegex = /.[a-f0-9]{8}$/;
// i.e.: Extracts .847f13f5 from categories.test1234.847f13f5.js
const fileHashRegex = /\.[a-f0-9]{8}(?=\.\w+$)/;
// Function that returns true if the filename has an old hash
let hasOldHash = function(file) {
const fileName = path.parse(file.path).name;
if(filenameHashRegex.test(fileName)){
console.log("***has old hash***");
return true;
}
};
// Get files we want to hash (namefiles)
gulp.src([
'src/app/commons/components/**/*.{js,html}'
])
// If filename already has a hash, removes it
.pipe(gulpif(hasOldHash, rename(filehashRegex, '')))
// Hash file and update references
.pipe(revAll.revision())
// Deletes unhashed old files (**THIS IS NOT WORKING FOR SOME REASON**)
.pipe(revDelete())
// Destination
.pipe(gulp.dest('src/app/commons/components/'));
});
ПРИМЕЧАНИЕ : я также попытался использовать gulp-rev, gulp-rev-replace и gulp-rev-replace-original вместе, и я могу хешировать файл, обновитьих ссылки, но невозможно удалить «старые хэшированные» файлы. Я могу поставить код, если это необходимо.
Спасибо за потраченное время !!