Gulp-rev-all объединяет хэш при каждом запуске - PullRequest
0 голосов
/ 05 октября 2018

Я сталкиваюсь со следующей проблемой при использовании плагинов 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 вместе, и я могу хешировать файл, обновитьих ссылки, но невозможно удалить «старые хэшированные» файлы. Я могу поставить код, если это необходимо.

Спасибо за потраченное время !!

...