如何在Gulp中添加特定的bower组件作为IE8条件块

Kou*_*nha 5 javascript internet-explorer-8 gulp gulp-inject wiredep

我有几个亭子部件,其中我需要像一些部件json3,respondjs,es5shim以在IE8条件块被添加(在构建以及服务)这样的:

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

我该如何着手编写任务?我找不到任何合适的例子gulp-inject以及wiredep这个问题.请指教

fra*_*acz 2

可以使用gulp-filtergulp-inject 的 starttag 选项

假设您在 中定义了以下注入index.html

<!--[if lt IE 9]>
<![endif]-->
<!-- inject:js -->
<!-- endinject -->
Run Code Online (Sandbox Code Playgroud)

您可以将它们连接到 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'));
});
Run Code Online (Sandbox Code Playgroud)

结果(例如):

<!--[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 -->
Run Code Online (Sandbox Code Playgroud)