之前前端代码部署时用的是grunt,后来又出了个gulp工具,最近试用了一下,很方便,感觉比grunt简单好用,下面把一些常见的任务列一下,备用。

var gulp = require('gulp');

var sdir = '0.0.1';
var ddir = '0.0.1.release'; var gutil = require('gulp-util');
var clean = require('gulp-clean');
var minifyCSS = require('gulp-minify-css');
var concat = require('gulp-concat');
var uglify = require('gulp-uglify');
var processhtml = require('gulp-processhtml'); gulp.task('clean', function(){
return gulp.src(['./'+ddir+'/*'], {read:false})
.pipe(clean());
}); var filesToMove = [
'./'+sdir+'/data/**/*.*',
'./'+sdir+'/img/*.*'
]; gulp.task('move', ['clean'], function(){
return gulp.src(filesToMove, {base: './'+sdir+'/' })
.pipe(gulp.dest('./'+ddir+'/'));
}); gulp.task('concat-minify-css', ['clean'], function() {
return gulp.src([
'./'+sdir+'/css/style.css',
'./'+sdir+'/css/animate.css'])
.pipe(concat('index.css'))
.pipe(minifyCSS())
.pipe(gulp.dest('./'+ddir+'/css/'));
}); gulp.task('concat-uglify-script-index', ['clean'], function() {
return gulp
.src([
"./"+sdir+"/js/jquery.js",
"./"+sdir+"/js/main.js"])
.pipe(concat('index.js'))
.pipe(uglify())
.pipe(gulp.dest('./'+ddir+'/js/'));
}); gulp.task('processhtml', ['clean'], function () {
return gulp.src('./'+sdir+'/*.html')
.pipe(processhtml())
.pipe(gulp.dest('./'+ddir+'/'));
}); gulp.task('default', function() {
gulp.start(
'move',
'concat-minify-css',
'concat-uglify-script-index',
'processhtml');
});

关于processhtml大家用的可能较少,这里简单地介绍一下。

例如我们有这样一个文件:

<!Doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<link rel="stylesheet" type="text/css" href="css/base.css">
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<div id="main"></div>
<script src="js/jquery.js"></script>
<script src="js/main.js"></script>
</body>
</html>

最终我们希望代码压缩合并后,输出这样的文件:

<!Doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<link rel="stylesheet" type="text/css" href="css/index.css">
</head>
<body>
<div id="main"></div>
<script src="js/index.js"></script>
</body>
</html>

那么如何做呢,这里就要用到processhtml了,在需要替换的地方加个特殊标记,然后用processhtml进行替换处理,标记如下:

<!Doctype html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
<!--build:css css/index.css -->
<link rel="stylesheet" type="text/css" href="css/base.css">
<link rel="stylesheet" type="text/css" href="css/style.css">
<!--/build-->
</head>
<body>
<div id="main"></div>
<!--build:js js/index.js-->
<script src="js/jquery.js"></script>
<script src="js/main.js"></script>
<!--/build -->
</body>
</html>

这个工具还是挺好用的。

用gulp清除、移动、压缩、合并、替换代码的更多相关文章

  1. gulp完成javascript压缩合并,css压缩

    最近需要对项目进行优化,主要是对js的压缩合并和css文件的压缩,查找相关资料之后发现gulp可以实现相关的功能,特此分享一下使用心得. 1.安装gulp gulp是基于Node.js的前端构建工具. ...

  2. Gulp 之图片压缩合并

    同事需要处理很多的图片,由于UI那边提供图片比较大,为了性能好一点,程序包小一点,因此希望我帮忙做成小程序来完成此工作. 其实之前做过一个grunt写的图片压缩合并工具,当时是为了处理270多个国家/ ...

  3. gulp之css,js压缩合并加密替换

    为了防止客户端的静态资源缓存,我们需要每次更新css或js的时候,通过md5或时间戳等方式重新命名静态资源.让客户端可以重新请求资源,而不是从缓存里取.然后html模板里的src也要做相应的修改.当然 ...

  4. 前端构建工具 Gulp 压缩合并JS/CSS 并添加版本号、ES6转ES5

    Gulp 基于 Node.js 的前端构建工具,可以实现前端代码的编译(sass.less).压缩合并(JS.CSS).测试:图片的压缩:已经添加 JS 和 CSS 版本号,防止浏览器缓存. 1. 安 ...

  5. gulp实时编译less,压缩合并requirejs模块文件

    gulp的使用命令简单,就几个,gulp的简单使用教材可以参考一点的gulp使用教材(http://www.ydcss.com/archives/18). 下面就简单的介绍这些命令如何互相配合的完成前 ...

  6. gulp自动化压缩合并、加版本号解决方案

    虽然网上有很多的 gulp 构建文章,但是很多都已经随着 gulp 插件的更新无法运行了.因此,我写了这个比较简单的构建方案. 如果还不熟悉 gulp 的插件,可以阅读上一篇文章:精通gulp常用插件 ...

  7. grunt压缩合并代码

    module.exports = function(grunt) { // 配置 grunt.initConfig({ pkg : grunt.file.readJSON('package.json' ...

  8. Google Closure Compiler高级压缩混淆Javascript代码

    一.背景 前端开发中,特别是移动端,Javascript代码压缩已经成为上线必备条件. 如今主流的Js代码压缩工具主要有: 1)Uglify http://lisperator.net/uglifyj ...

  9. 编写gulpfile.js文件:压缩合并css、js

    使用gulp一共有四个步骤: 1. 全局安装 gulp: $ npm install --global gulp 2. 作为项目的开发依赖(devDependencies)安装: $ npm inst ...

随机推荐

  1. 在VirtualBox ubuntu/linux虚拟机中挂载mount共享文件夹

    referemce: https://www.smarthomebeginner.com/mount-virtualbox-shared-folder-on-ubuntu-linux/ 1) Virt ...

  2. sap.ui.require in SAP UI5 and require in nodejs

    UI5 例如我需要在controller的onShowHello里通过MessageToast弹一个消息显示在UI上, 我需要先定义我自己的controller,该controller extend自 ...

  3. SQL:数据库批量插入数据

    测试中有些功能要求有足够的数据进行测试,当输入字段较多时通过页面添加很慢.业务只关联单个数据库表可以通过数据库批量插入数据 批量插入数据示例: declare @i int--声明变量 --变量初始化 ...

  4. 一款带有CSS的单选框以及选中事件

    html <div class="radio radio-success"> <input type=" name="radioSingle1 ...

  5. spring使用bean

    ApplicationContext 应用上下文,加载Spring 框架配置文件 加载classpath: new ClassPathXmlApplicationContext(“applicatio ...

  6. 错误:javax.servlet.http.HttpServlet" was not found on the Java Build Path

    我们在用Eclipse进行Java web开发时,可能会出现这样的错误: The superclass javax.servlet.http.HttpServlet was not found on ...

  7. mysql常用命令添加外键主键约束存储过程索引

    数据库连接 mysql -u root -p123456 查看表 show databases 创建数据库设置编码 create table books character set utf8; 创建用 ...

  8. data-ng-app 指令

    1.data-ng-app指令定义了一个AngularJS应用程序的根元素. 2.data-ng-app会在页面加载完毕后自动进行初始化应用程序. 3.data-ng-app可以通过一个值连接到代码模 ...

  9. 11、SpringBoot------定时任务

      开发工具:STS 代码下载链接:https://github.com/theIndoorTrain/Springboot/tree/52ef6c0c805913db1e66ed18671c322e ...

  10. JavaWeb各大组件生命周期

    JavaWeb各大组件生命周期 servlet生命周期 服务器打开:在第一次请求时实例化与初始化:然后进行服务:最后服务器关闭销毁 Cookie生命周期:存储在客户端 如果不设置过期时间,则表示这个c ...