美文网首页
gulp-usemin

gulp-usemin

作者: 风之化身呀 | 来源:发表于2017-12-16 01:44 被阅读118次

    1、作用及基本用法

    一个html文件中一般会依赖多个css文件,该插件就是通过一种特殊的注释语法将所个css文件替换成一个。

    var usemin = require('gulp-usemin');
    gulp.task('usemin', function() {
      return gulp.src('./*.html')
        .pipe(usemin({options}))
        .pipe(gulp.dest('build/'));
    });
    //html特殊注释
    <!-- build:css style.css -->
    <link rel="stylesheet" href="css/clear.css"/>
    <link rel="stylesheet" href="css/main.css"/>
    <!-- endbuild -->
     
    <!-- build:htmlimport components-packed.html -->
    <link rel="import" href="components-a.html">
    <link rel="import" href="components-b.html">
    <!-- endbuild -->
     
    <!-- build:js js/lib.js -->
    <script src="../lib/angular-min.js"></script>
    <script src="../lib/angular-animate-min.js"></script>
    <!-- endbuild -->
     
    <!-- build:js1 js/app.js -->
    <script src="js/app.js"></script>
    <script src="js/controllers/thing-controller.js"></script>
    <script src="js/models/thing-model.js"></script>
    <script src="js/views/thing-view.js"></script>
    <!-- endbuild -->
     
    <!-- build:remove -->
    <script src="js/localhostDependencies.js"></script>
    <!-- endbuild -->
     
    <!-- build:inlinejs -->
    <script src="../lib/angular-min.js"></script>
    <script src="../lib/angular-animate-min.js"></script>
    <!-- endbuild -->
     
    <!-- build:inlinecss -->
    <link rel="stylesheet" href="css/clear.css"/>
    <link rel="stylesheet" href="css/main.css"/>
    <!-- endbuild -->
    

    2、注释语法

    三个参数可以配置

    ... HTML Markup, list of script / link tags.

    • pipelineId: 对应options中的某个配置,比如css,js等,填哪个Id,其包含的块就会执行option中配置的Id对应的任务;或者填remove,表示该section会被删除,即不会编译到html中
    • alternate search path: (optional) css,js文件一般是相对于当前html的,但是这个配置项可以改变这个相对地址,即可以不相对于html
    • path: 执行完pipelineId对应的任务后生产的文件路径

    3、配置项

    • assetsDir
      设置处理后的静态资源根路径,可用于配置CDN
    • path
      设置第2节中的alternate search path,可被某个具体的块重写
    • pipelineId String
      若存在就用其改变对应的文件,如果没有包含字符串'concat',就会作为第一个管道中的成员,若有concat,则concat永远是管道中的第一个
    • outputRelativePath String
      经过处理输出的js和css相对html文件的位置
    • enableHtmlComment Boolean
      是否保留html里的评论
    • jsAttribute Object
      在输出的script上添加属性,主要是加defer做异步加载
    {
            async : true,
            defer:true,
            lorem : 'ipsum',
    }
    
    • skipMissingResources Boolean
      当一个资源不存在时,是否跳过,默认false,当一个资源不存在时会报错

    4、其他

    • 该插件自带concat功能,无需再引入其他concat插件
    • 如果你需要使用两次相同的管道输入,你需要给将任务用函数包起来
    gulp.task('usemin', function() {
      return gulp.src('./*.html')
        .pipe(usemin({
          css: [ rev ],
          html: [ function () {return htmlmin({ collapseWhitespace: true });} ],
          js: [ uglify, rev ],
          inlinejs: [ uglify ],
          inlinecss: [ cleanCss, 'concat' ]
        }))
        .pipe(gulp.dest('build/'));
    });
    

    gulp.task('usemin', ['sass'], function() { //
    del('build/')
    gulp.src([
    _opt.src + 'view/ink-share.html'
    ], {
    base: _opt.src
    })
    .pipe(gulpRevAll.revision({
    prefix: 'http://1234.cloudfront.net/'
    }))
    .pipe(usemin({
    css: [minifyCss(), gulpRevAll.revision({
    hashLength: 4,
    prefix: 'http://1234.cloudfront.net/'
    })],
    html: [function() {
    return htmlmin({
    collapseWhitespace: true
    });
    }],
    js: [uglify(), gulpRevAll.revision({
    hashLength: 4,
    prefix: 'http://1234.cloudfront.net/'

            })],
            // inlinejs: [uglify],
            // inlinecss: [minifyCss, 'concat']
        }))
        .pipe(gulp.dest('build/'));
    

    });

    相关文章

      网友评论

          本文标题:gulp-usemin

          本文链接:https://www.haomeiwen.com/subject/iiejwxtx.html