2015-01-06 35 views
5

Mam kilka komponentów altanowych, z których potrzebuję niektórych komponentów, takich jak json3, respondjs, es5shim do dodania w bloku warunkowym IE8 (zarówno w kompilacji, jak i na serwerze) to:Jak dodać konkretne komponenty altanowe jako blok warunkowy IE8 w Gulp

<!--[if lt IE 9]> <script src="bower_components/json3/json3.js"></script> <![endif]-->

Jak należy postępować, aby napisać zadanie? Nie mogłem znaleźć żadnych odpowiednich przykładów z gulp-inject, a także wiredep dla tego problemu. Proszę doradzić

+0

Can wykombinuj sposób na zewnątrz ignorowania tych plików/komponentów za pomocą wiredep i dodawania warunkowego bl ock i jego zawartość ręcznie do HTML. –

+0

Tak, obecnie właśnie zachowałem znaczniki skryptów w instrukcjach warunkowych na stałe. To, czego chcę, to dynamiczny sposób zrobienia tego za pomocą wtyczki gulp. –

Odpowiedz

2

Jest to możliwe z gulp-filter i gulp-inject's starttag option.

Załóżmy, że masz następujące zastrzyki zdefiniowane w index.html:

<!--[if lt IE 9]> 
<![endif]--> 
<!-- inject:js --> 
<!-- endinject --> 

Można podłączyć je w gulpfile:

var gulp = require('gulp') 
var bowerFiles = require('main-bower-files'); 
var gulpFilter = require('gulp-filter'); 
var gulpInject = require('gulp-inject'); 

gulp.task('wiredep', function() { 
    var ie8Files = ['**/json3.js', '**/es5shim.js']; 
    // the same as: var restFiles = ['*', '!**/json3.js', '!**/es5shim.js']; 
    var restFiles = ['*'].concat(ie8Files.map(function(e) { return '!' + e;})); 
    return gulp.src('index.html') 
    .pipe(gulpInject(gulp.src(bowerFiles(), {read: false}).pipe(gulpFilter(restFiles)))) 
    .pipe(gulpInject(gulp.src(bowerFiles(), {read: false}).pipe(gulpFilter(ie8Files)), 
        {starttag: '<!--[if lt IE 9]>', endtag: '<![endif]-->'})) 
    .pipe(gulp.dest('dist')); 
}); 

co skutkuje (na przykład):

<!--[if lt IE 9]> 
<script src="bower_components/json3/json3.js"></script> 
<script src="bower_components/shim/es5shim.js"></script> 
<![endif]--> 
<!-- inject:js --> 
<script src="bower_components/jquery/jquery.js"></script> 
<!-- endinject --> 
+0

Dokładnie tego, czego szukałem. –