我的gulp的初次尝试

首先,我的例子的基本目录结构如下图所示:



在页面index.html中会引用style1.css和style2.css中的样式,并且会调用script1.js和script2.js中的javascript脚本


index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link href="assets/main.css" rel="stylesheet" type="text/css"/>
</head>
<body>
    <div>
        <a href="xxx">hello world</a>
    </div>
    <img src="../others/bg.jpg"/>
    <script type="text/javascript" src="assets/main.js"></script>
</body>
</html>


script1.js


function SayHello(){
    alert("hello world");
}

script2.js

window.onload = function(){
    setTimeout(function() {
        SayHello();
    }, 2000);
}

style1.css


body{
    background-color: gray;
}

style2.css

img{
    border: 2px solid greenyellow;
}


接下来要做的就是将整个页面打包,压缩,并且MD5命名,防止缓存


首先电脑安装node.js

然后在当前目录下创建一个gulpfile.js



将控制命令行转到当前目录执行

npm init

进行环境初始化


此时会生成一个package.json




由于需要使用到

gulp
gulp-uglify
gulp-minify-css
gulp-minify-html
gulp-concat
gulp-rev
gulp-rev-collector
run-sequence
gulp-replace
minimist
所以需要先在全局和当前目录下安装


npm install -g gulp	// global install

npm install --save-dev gulp	// local install and save in package.json

全部安装完后的目录结构和package.json的内容如下




编写的gulpfile.js文件


var gulp = require('gulp'),
    uglify = require('gulp-uglify'),
    minifyCss = require("gulp-minify-css"),
    minifyHtml = require("gulp-minify-html"),
    concat = require("gulp-concat"),
    rev = require('gulp-rev'),
    revCollector = require('gulp-rev-collector'),
    runSequence = require('run-sequence'),
    replace = require('gulp-replace'),
    minimist = require('minimist');

// minify css and MD5
gulp.task('minify-css', function () {
    return gulp.src('css/*.css')
        .pipe(concat('main.css'))
        .pipe(minifyCss())
        .pipe(rev())
        .pipe(gulp.dest('build/assets'))
        .pipe(rev.manifest())
        .pipe(gulp.dest('rev/css'));
});

// minify js and MD5
gulp.task('minify-js', function () {
    return gulp.src('js/*.js')
        .pipe(concat('main.js'))
        .pipe(uglify())
        .pipe(rev())
        .pipe(gulp.dest('build/assets'))
        .pipe(rev.manifest())
        .pipe(gulp.dest('rev/js'));
});

// rename js and css in html from manifest file and minify html
gulp.task('minify-html', function () {
    return gulp.src(['rev/**/*.json', 'html/*.html'])
        .pipe(revCollector())
        .pipe(replace('xxx', url))
        .pipe(minifyHtml())
        .pipe(gulp.dest('build/'));
});

// copy other files
gulp.task('copy', function () {
    return gulp.src('others/*.*')
        .pipe(gulp.dest('build/assets'));
});

// run sequence
gulp.task('dev', function (done) {
    condition = false;
    runSequence(
        ['copy'], ['minify-js'], ['minify-css'], ['minify-html'],
        done);
});

// input parameter
var knownOptions = {
    string: 'env',
    default: {
        env: process.env.NODE_ENV || 0
    }
};

var url = 'https://www.baidu.com';
var options = minimist(process.argv.slice(2), knownOptions);
switch (options.env) {
    case '0':
        url = 'https://www.baidu.com';
        break;
    case '1':
        url = 'https://www.mi.com';
        break;
}

// start
console.log("The request url will be configured as " + url);
gulp.task('default', ['dev'], function () {

});



由于我想简化打包过程并且动态的更改index.html中的超链接地址,所以我再创建一个build.bat在根目录,以后只要双击这个build.bat就行,不用在执行gulp命令

@echo off
 call npm install --cache-min 999999999
 echo.Please input the follow number to config the url. (e.g. 1)
 echo.0. https://www.baidu.com
 echo.1. https://www.mi.com
 echo.
 set /p num=
 gulp --env %num%
pause


双击build.bat


此处选择1回车


可以看到生成了一个build文件夹,最终的打包结果就在build文件夹中


此时所有的css,js文件已经被压缩且被MD5命名了



此时打开index.html,也能发现里面的css和js引用的地方也都被更新了,且压缩了

<!DOCTYPE html><html lang=en><head><meta charset=UTF-8><meta name=viewport content="width=device-width, initial-scale=1.0"><meta http-equiv=X-UA-Compatible content="ie=edge"><title>Document</title><link href=assets/main-a1cf48513f.css rel=stylesheet type=text/css></head><body><div><a href=https://www.mi.com>hello world</a></div><img src=../others/bg.jpg><script type=text/javascript src=assets/main-c4095a9679.js></script></body></html>


最终效果




之后如果修改了css文件,或者js文件,生成出来的文件名会有所变化,这样就防止因为浏览器缓存问题而没有应用最新的code了


完整代码:https://github.com/edwin-su/gulp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值