gulp的使用与遇过的坑

一:

这里写图片描述

记录错误:

Gulp Error: Cannot find module ‘jshint/src/cli’

问题原因:
插件安装不完全,新版本gulp做了一些调整好像。。。。

解决方法:
使用npm install –save-dev jshint gulp-jshint
而不是npm install –save-dev gulp-jshint

二:
需求:利用gulp生成带版本号的静态文件,这样可以避免静态文件缓存问题导致服务器那边改动代码,而客户端用户却没有收到相应的修改。

问题:利用gulp自动生成带版本号的静态文件,并自动映射到html文件里面,然后用网上很多教程都实现不了,检测出原因可能是由于版本号的各种原因,最后找到一个解决的方案,代码如下图:

gulpfile.js

var gulp = require('gulp'),
    htmlmini = require('gulp-html-minify'),
    useref = require('gulp-useref'),
    uglify = require('gulp-uglify'),
    sass = require('gulp-sass'),
    csso = require('gulp-clean-css'),
    filter = require('gulp-filter'),
    RevAll = require('gulp-rev-all'),
    del = require('gulp-clean');

gulp.task('default',['del'],function () {
    var jsFilter = filter('**/main.js',{restore:true}),
        cssFilter = filter('**/*.css',{restore:true}),
        htmlFilter = filter(['**/*.html'],{restore:true});
    gulp.src('*.html')
        .pipe(useref())                         // 解析html中的构建块
        .pipe(jsFilter)                         // 过滤所有js
        .pipe(uglify())                         // 压缩js
        .pipe(jsFilter.restore)
        .pipe(cssFilter)                        // 过滤所有css
        .pipe(sass().on('error', sass.logError))                        
        .pipe(csso())                           // 压缩优化css
        .pipe(cssFilter.restore)
        .pipe(RevAll.revision({                 // 生成版本号
            dontRenameFile: ['.html'],          // 不给 html 文件添加版本号
            dontUpdateReference: ['.html']      // 不给文件里链接的html加版本号
        }))
        .pipe(htmlFilter)                       // 过滤所有html
        // .pipe(htmlmini())                       // 压缩html
        .pipe(htmlFilter.restore)
        .pipe(gulp.dest('./dist'))

});

gulp.task('del',function () {
    gulp.src(['dist/static/css','dist/static/js'],{read:false})
        .pipe(del());                             
});// 构建前先删除dist文件里的旧版本

gulp.watch('*.html', function(){
    gulp.run('default');

});
gulp.watch('src/js/main.js', function(){
    gulp.run('default');

});
gulp.watch('src/sass/main.scss', function(){
    gulp.run('default');
});

html:生成前

<!-- build:js static/js/jq.js --> 
<script src="common/js/jquery-1.11.3.min.js"></script>
<!-- endbuild -->
<!-- build:js static/js/md5.js --> 
<script src="common/js/md5.min.js"></script>
<!-- endbuild -->
<!-- build:js static/js/main.js --> 
<script src="src/js/main.js"></script>
<!-- endbuild -->

html:生成后

<script src="static/js/jq.895323ed.js"></script>
<script src="static/js/md5.ea27c6f7.js"></script>
<script src="static/js/main.350f86f4.js"></script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值