@Derron
Front-End Developer

Как в Gulp или Grunt реализовать приоритет файлов?

Суть проблемы такова: в проекте есть папка "vendor" в которой собраны все файлы с классами от разработчиков движка, и есть папка "views" в которой некоторые классы переопределены.

Зада состоит в том, что бы при сборке проекта сборщик проверял есть ли файл с переопределенным классом, и грузил его, а если нет, то брал из "vendor".
  • Вопрос задан
  • 511 просмотров
Решения вопроса 1
@Derron Автор вопроса
Front-End Developer
Данная проблема реширась вот так:

gulpfile.js
var gulp = require('gulp');
var resolveDependencies = require('gulp-resolve-dependencies');
var concat = require('gulp-concat');
var del = require('del');
var order = require('gulp-order');

// JS tasks
// ==========================

// merge files from 2 directories and put them to tmp folder
gulp.task('js:merge', function (cb) {
    var stream = gulp
        .src(['./base/js/**/**', './js/**/**'])
        .pipe(gulp.dest('./merged-js'))
    ;

    stream.on('end', function () {
        cb();
    });
});

// resolve dependencies and build concatenated version
gulp.task('js:concat', ['js:merge'], function (cb) {
    var stream = gulp
        .src(['./merged-js/**/**'])
        .pipe(order([
            'constants.js',
            'config-base.js',
            'config.js',
            'app.js',
            'utils/*',
            'services/*',
            'controllers/**/**',
            'ui/*',
            'views/**/**',
            'bootstrap.js'
        ]))
        .pipe(resolveDependencies({
            resolvePath: function (match, targetFile) {
                return './merged-js/' + match;
            }
        }))
        .pipe(concat('build.js'))
        .pipe(gulp.dest('./'))
    ;

    stream.on('end', function () {
        cb();
    });
});

// delete tmp folder
gulp.task('js:cleanup', ['js:concat'], function () {
    del('./merged-js');
});

// ==========================

// HTML tasks
// ==========================

gulp.task('html:merge', function (cb) {
    var stream = gulp
        .src(['./base/views/**/**', './views/**/**'])
        .pipe(gulp.dest('./merged-html'))
    ;

    stream.on('end', function () {
        cb();
    });
});

gulp.task('html:concat', ['html:merge'], function (cb) {
    var stream = gulp
        .src(['./merged-html/**/**'])
        .pipe(order([
            'index.start.html',
            'body.html',
            'templates/**/**',
            'index.end.html'
        ]))
        .pipe(concat('index.html'))
        .pipe(gulp.dest('./'))
    ;

    stream.on('end', function () {
        cb();
    });
});

// delete tmp folder
gulp.task('html:cleanup', ['html:concat'], function () {
    del('./merged-html');
});

// ==========================

// Default Task
gulp.task('default', [
    'js:merge', 'js:concat', 'js:cleanup',
    'html:merge', 'html:concat', 'html:cleanup'
]);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы