2016-08-27 3 views
0

Что такое хорошая стратегия для объединения и минимизации модулей?задача сборки gulp - concat и minify модули

Я хочу принять это:

<script type="text/javascript" src="bower_components/angular-route/angular-route.js"></script> 
<script type="text/javascript" src="bower_components/angular-bootstrap/ui-bootstrap-tpls.js"></script> 
<script type="text/javascript" src="bower_components/angular-ui-router/release/angular-ui-router.min.js"></script> 
<script type="text/javascript" src="bower_components/satellizer/satellizer.min.js"></script> 
etc... 

И сделать это:

<script src="js/all_bower_components.js"></script> 

Я бегу этот процесс сборки для других моих JS-файлов, которые объединяются и уменьшенная в main.js, но это легко, потому что моя структура папок для моих собственных файлов JS относительно предсказуема. Но мои компоненты Бауэр не является:

bower_components/ 
    angular/ 
     angular.js 
     index.js 
     other random js files which aren't the ones I need 
    jquery/ 
     dist/ 
      jquery.js 
     src/ 
      bunch of other crap 

Я пытаю его как таковой: Петля через все компоненты и подпапок и просто искать .js файлы ... но опять же, это может быть в том числе вещи, мне не нужно, как index.js in Угловой:

gulp.task('modules', function() { 
    return gulp.src(['bower_components/**/*.js']) 
     .pipe(concat('modules.js')) 
     .pipe(uglify()) 
     .pipe(gulp.dest('public/js')); 
}); 

Любые мысли?

ответ

1

Вы пробовали main-bower-files? этот плагин gulp будет захватывать все ваши базовые bower .js и .css, заглядывая в файл bower.json вашего компонента, для которого файлы захватываются (перечисленные как main). вы можете переопределить значения по умолчанию в своем обращении к плагину для любых требований, которые не соответствуют их конфигурации bower.json. Я нашел это очень полезным для объединения vendor.js и vendor.css для приложения с зависимой нагрузкой.

удачи!

+0

Это довольно круто. По какой-то причине я не могу «угадать» конкатенированные JS-файлы: «GulpUglifyError: не удалось минимизировать JavaScript» - все же uglify работает для других моих файлов приложений js – Growler

+0

hmm, не сталкивался с этим - я прохожу мимо через uglify, и у меня не было жалобы - убедитесь, что вы используете 'gulpFilter' для получения только файлов .js для uglify (и потенциально другого фильтра для .css) – derelict

+0

Будет ли это просто' var jsFilter = filter ('**/*. js'); ' затем 'return gulp.src (mainBowerFiles()). pipe (concat ('modules.js')). pipe (jsFilter) ... etc'? – Growler

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