chuikoffru
@chuikoffru
Full Stack JS Developer

Как сохранить порядок js файлов при конкатенции gulp'ом?

Здравствуйте! У меня есть следующий рабочий порядок скриптов:

<script src="js/jquery-2.1.3.min.js"></script>
        <script src="js/bootstrap.min.js"></script>
        <script src="js/socket.io.min.js"></script>
        <script src="js/angular.min.js"></script>
        <script src="js/angular/angular-route.min.js"></script>
        <script src="js/angular/angular-resource.min.js"></script>
        <script src="app.js"></script>
        <script src="factory/ng-socket-io.js"></script>
        <script src="controllers/MainController.js"></script>
        <script src="controllers/AuthController.js"></script>


Хочу их сжать и склеить gulp'ом, делаю следующим образом:

var assets = {
    js : [
        'public/js/vendor/*.js',
        'public/js/angular/*.js', 
        'public/js/app.js', 
        'public/factory/*.js',
        'public/controllers/*.js'
    ]
};

gulp.task('js', function(){
    gulp.src(assets.js)
        .pipe(concat('build.js'))
        .pipe(uglify())
        .pipe(gulp.dest('public/'))
});


Но как вы понимаете начались жалобы на отсутствие jquery, потом отсутствие angular модуля, и.т.д. Скажите пожалуйста как мне сохранить порядок конкатенции и не потерять эффект автоматизации подгрузки новых скриптов?

Нашел ответ, что можно разделить на 2 потока (файла), в одной vendor, в другом angular, но мне хотелось бы обойтись одним файлом. Спасибо!

И еще один вопрос, если в папке уже лежат min файлы, их стоит удалить, и добавить неминифицированные, или это никак не влияет, можно и минифицированные обрабатывать?
  • Вопрос задан
  • 1243 просмотра
Решения вопроса 1
Для сохранения порядка можно воспользоваться gulp-order.
Минимизированные файлы можно обрабатывать, но если вдруг захотите исключить их из минимизации, то можно воспользоваться модулем gulp-if. К примеру
var gulpif = require('gulp-if');
var uglify = require('gulp-uglify');

var notMinified = function (file) { 
    return !/\.min\.js/.test(file.path); 
};

gulp.task('task', function() {
  gulp.src('./src/*.js')
    .pipe(gulpif(notMinified , uglify()))
    .pipe(gulp.dest('./dist/'));
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы