javascript - 如何在 Gulp 中添加特定的 Bower 组件作为 IE8 条件 block

标签 javascript internet-explorer-8 gulp wiredep gulp-inject

我有几个 Bower 组件,其中我需要一些组件,例如 json3 , respondjs , es5shim像这样添加到 IE8 条件 block 中(在构建和服务中):

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

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

最佳答案

可以用 gulp-filtergulp-inject's starttag option .

假设您在 index.html 中定义了以下注入(inject):

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

您可以将它们连接到 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'));
});

结果(例如):

<!--[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 -->

关于javascript - 如何在 Gulp 中添加特定的 Bower 组件作为 IE8 条件 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27794237/

相关文章:

node.js - 如果不存在,如何使用 Browserify 创建新目录?

javascript - 在 Vue.js 中包含 bootstrap 抛出 jQuery not found 错误

javascript - 获取对象数组中出现次数的计数

javascript - Api-Version header 未正确发送

javascript - 当我尝试向托管账户付款时出现错误

javascript - 'var' 为 null 或不是对象

javascript - 使用 Gulp 输出缩小版和非缩小版

javascript - 如何在段落中找到一个不强的元素

html - CSS 将视口(viewport)中的元素垂直和水平居中并使其响应跨浏览器

html - CSS 菜单在 IE8 中不起作用