2015-09-20 4 views
1

Продолжая мой предыдущий question - но на этот раз это следующий шаг: получение прав на файл для работы.Не удается получить gulp-rev-replace, работая с gulp-useref

Я работаю по курсу johnpapa по автоматизации с помощью Gulp и, кажется, ударяю другую стену (это то, что вы получаете, когда пытаетесь адаптировать сжатый курс к другой файловой структуре: P).

В принципе, проблема в том, что я получаю файлы с именем с пересмотром, но эти имена не попадают в конечный результат test.jsp, и я не могу понять, почему ...

Это задач (минификация опущено для краткости, но он отлично работает с файлом revisioning):

gulp.task('build-dev', ['inject'], function() { 

    var assets = $.useref.assets({searchPath: ''}); 

    return gulp 
     .src(config.indexFile) 
     .pipe($.rename('test.jsp')) 
     .pipe($.plumber()) 
     .pipe(assets) 
     .pipe($.rev()) 
     .pipe(assets.restore()) 
     .pipe($.useref()) 
     .pipe($.revReplace({modifyUnreved: replaceDirectory, modifyReved: replaceDirectory})) 
     .pipe(gulp.dest(config.indexLocation)) 
     .pipe($.rev.manifest()) 
     .pipe(gulp.dest(config.indexLocation)) 
     ; 
}); 

inject задача, которая впрыскивает CSS и JS ссылки на файл индекса (работает корректно), $ является require('gulp-load-plugins')({lazy: true}) и config.indexFile есть index.jsp.

replaceDirectory функция (используется, так как преподобному манифест генерирует полный путь):

function replaceDirectory(path) { 

    var strToReplace = '../..'; 
    var strToReplaceWith = process.cwd().replace(/\\/g, '/') + '/WebContent'; 

    if (path) { 
     return path.replace(strToReplace, strToReplaceWith); 
    } else { 
     return path; 
    } 
} 

Моя файловая структура (в отличие от одного в процессе) является:

- ModuleDir 
    - dist 
     - css 
      - lib.css 
      - app.css 
     - fonts 
     - images 
     - js 
      - lib.js 
      - app.js 
    - css 
    - js 
    - web-app 
     - InnerDir 
      - index.jsp 
      - test.jsp 
    - package.json, bower.json, etc. (all the required files) 

В принципе, индекс .jsp обрабатывается для ресурсов библиотеки CSS и JS и приложений, которые минимизируются и объединяются в lib.css, lib.js, app.css и app.js. Позже все они вводятся в копию index.jsp, которая называется test.jsp.

Сборка активов, конкатенация, впрыскивание и редактирование файлов на диске великолепно. Обновление имен файлов в test.jsp - не так много ...

Любые идеи или указатели будут оценены.

ответ

4

Вы должны добавить replaceInExtensions: '.jsp' в свои варианты для revReplace().

У меня была эта проблема в течение полутора дней, прежде чем я посмотрел код плагина и понял это. Я использую файлы .php. В документации говорится, что вам нужно это сделать, но ее легко упустить.

Надеюсь, это поможет.

+0

Большое спасибо! Позаботьтесь об этом позже, но это имеет смысл - и я пропустил его в документах ... :) Будет придерживаться моего решения (оно лучше подходит для нашего процесса dev, в конце концов), но приятно знать правильный ответ! – st2rseeker

0

В то же время (если я не найти источник проблемы или любой из вас может помочь), я выбрал другой тайник перебора схемы:

gulp.task('build-dev', ['inject'], function() { 

    var assets = $.useref.assets({searchPath: ''}); 
    var cb = Math.random(); 

    return gulp 
     .src(config.indexFile) 
     .pipe($.rename('test.jsp')) 
     .pipe($.plumber()) 
     .pipe(assets) 
     .pipe(assets.restore()) 
     .pipe($.useref()) 
     .pipe($.replace('dist/css/lib.css', 'dist/css/lib.css?cb=' + cb)) 
     .pipe($.replace('dist/css/app.css', 'dist/css/app.css?cb=' + cb)) 
     .pipe($.replace('dist/js/lib.js', 'dist/js/lib.css?cb=' + cb)) 
     .pipe($.replace('dist/js/app.js', 'dist/js/app.js?cb=' + cb)) 
     .pipe(gulp.dest(config.indexLocation)) 
     ; 
}); 

Это не ответ, который я хочу, но это это ответ, который мне нужен. :)

Смежные вопросы