详解常用的gulp命令

gulp.js是一款自动化构建工具,我们经常使用它在开发过程自动执行常见的任务。gulp.js 是基于 Node.js 构建的,利用 Node.js,可以快速构建项目。

由于gulp使用基于node,所以首先要安装node环境。node.js有很多非常强大的作用,本文主要应用其环境以及把它当成一款包管理器来使用

使用gulp来构建项目,其步骤为:

1.在目录中创建dist文件夹(要发布的代码)

src文件夹(开发代码)

2.在根目录下写命令行 初始化:npm init ,此时根目录会出现package.json

3.局部安装gulp

npm install gulp --save-dev

4.创建gulpfile.js文件 与dist和src同级

配置信息:

首先引入:

var gulp = require("gulp")

(1)若想把src中的图片压缩至dist中

首先需要引入:

var imgin = require("gulp-imagemin")

其中gulp-imagemin为图片压缩的gulp插件,在require之前,首先需要在命令中 npm install下来

其次创建gulp任务

gulp.task("copyimg",function(){

     return
              gulp.src("src/img/images/**/*").
              pipe(imgin()).
              pipe(gulp.dest("dist/images"));
  })

其中copyimg为任务名,gulp.src()中为要操作的图片,pipe()中是要执行的,imgin是上面定义的压缩图片插件的名,gulp.dest()为要将图片移动到的文件夹

(2)若想把src的所有js文件合并成一个js文件且放入dist下

首先,先引入

var uglify = require("gulp-uglify");
var concat = reqiire("gulp-concat");
var rename = require("gulp-rename");

其中 gulp-uglify 用来压缩js ,gulp-concat 用来合并js,gulp-rename用来重命名.同理在require之前需要 npm install ....

其次,创建gulp任务

gulp.task("copyjs",function(){
    return
       gulp.src("/src/js/**/*").
          pipe(concat("all.js")).
          pipe(uglify()).
          pipe(rename("all.min.js")).
          pipe(gulp.dest("dist/js"))
})

这个任务意思就是把src/js/下的所有文件合并起来,叫all.js。再将all.js压缩,之后重命名为all.min.js,将此js放入dist/js/下

(3)若想将css文件压缩,新增一个hash值,放到dist文件下

var minifycss = require("gulp-minifycss");
var rev = require("gulp-rev")

其中gulp-minifycss 用来压缩css文件 ,gulp-rev用来给静态资源文件加上一个hash值,同理注意使用 npm install ...下载插件

gulp.task("copycss",function(){
        return
           gulp.src("src/css/**/*").
           pipe(minifycss()).
           pipe(rev()).
           pipe(gulp.dest("dist/css")).
           pipe(rev.manifest()).
           pipe(gulp.dest("dist/css"));

})

此任务将src/css里的所有文件压缩并生成hash后缀名。rev.manifest()是会生成一个json,里面存储的是文件原名和生成hash文件名的对应。最后将文件放到dist/css下

(4)若想html文件压缩并放入dist下

var htmlmin = require("gulp-htmlmin");

其中gulp-htmlmin用来压缩html文件

gulp.task("copyindex",function(){
    return
       gulp.src("src/client/**/*").
        pipe(htmlmin({          removeComments:true,          collapseWhite:true,          collapseBooleanAttributes:true,//省略布尔属性的值,如<input checked="true"/> ==> <input />
          removeEmptyAttributes: true,//删除所有空格作属性值 <input id="" /> ==> <input />          removeScriptTypeAttributes: true,//删除<script>的type="text/javascript"          removeStyleLinkTypeAttributes: true,//删除<style>和<link>的type="text/css"          minifyJS: true,//压缩页面JS          minifyCSS: true//压缩页面CSS

})).pipe(gulp.dest("dist/client"))
})

此task用来压缩html页面,有很多选项可选择,如上注释

(5)若css文件用了gulp-rev。则html文件在使用时需要动态更改引入的css文件名

var revCollector = require("gulp-rev-collector");

gulp-rev-collector根据rev生成的json文件用来替换html 中的<link href=""/>

gulp.task("rev-collector",function(){
    return
            gulp.src(["dist/css/**/*.json","dist/client/*.html"]).
            pipe(revcollector({replaceReved:true})).
            pipe(gulp.dest("dist/client"));
})

其中设置replaceReved标识, 用来说明模板中已经被替换的文件是否还能再被替换,默认是false

(6)若想自动监听

gulp.task("watch",function(){
  gulp.watch("src/index.html",["copyindex"]);
  gulp.watch("src/images/**/*",["copyimg"])
})

此任务对src下的index.html的文件监听任务名为copyindex的任务,同时对src/images下的所有图片监听copyimg这个任务

(7)创建服务器

var connect =   require(‘gulp-connect‘);

用来创建个服务器

 gulp.task(‘connect‘,function(){
        connect.server({
            root:"dist",//根目录
            port: 8080,//端口号
            livereload:true
        });
    });  

此task设置了服务的根目录,端口号,以及是否即时刷新

本文主要分享这些,一般为gulp常用的命令,需特别注意文中所有reqire进来的资源 都需要用npm install 插件名将插件下载下来

时间: 2024-10-09 17:53:42

详解常用的gulp命令的相关文章

Linux tar 命令参数及用法详解--Linux打包备份命令

linux tar命令参数及用法详解--linux打包备份命令 tar命令 tar - tar 档案文件管理程序的 GNU 版本.下面将逐个介绍其含义tar [-cxtzjvfpPN] 文件与目录 ....常用参数:-c :建立一个压缩文件的参数指令(create 的意思):-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩.-z :是否同时具有 gzip 的属性?亦即是否需

(5)ps详解 (每周一个linux命令系列)

(5)ps详解 (每周一个linux命令系列) linux命令 ps详解 引言:今天的命令是用来看进程状态的ps命令 ps 我们先看man ps ps - report a snapshot of the current processes. 翻译:显示当前进程的快照.ps是 Process Status的缩写 具体的描述如下: DESCRIPTION ps displays information about a selection of the active processes. If yo

详解性能调优命令

1.ps 通常我们会使用ps -aux查看用户启动的进程 USER:进程的属主 PID:进程的ID %CPU:进程占CPU的百分比 %MEM:进程占内存的百分比 VSZ:进程使用的虚拟内存量(KB) RSS:进程使用的固定内存量(KB) TTY:进程运行的终端,若与终端无关,则显示?.若为pts/0等,则表示由网络连接主机进程 STAT:进程的状态 D:不可中断的静止 R:正在执行中 S:静止状态 T:暂停静止 Z:不存在但暂时无法消除 W:没有足够的记忆体分页可分配 <:高优先序的行程 N:低

linux cp命令参数及用法详解---linux 复制文件命令cp

linux cp命令参数及用法详解---linux 复制文件命令cp [[email protected]Linux ~]# cp [-adfilprsu] 来源档(source) 目的檔(destination)[[email protected]linux ~]# cp [options] source1 source2 source3 -. directory参数:-a :相当于 -pdr 的意思:-d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身:-

(3)lscpu详解 (每周一个linux命令系列)

(3)lscpu详解 (每周一个linux命令系列) linux命令 lscpu详解 引言:今天的命令是用来看cpu信息的lscpu lscpu 我们先看man lscpu display information about the CPU architecture 翻译:显示cpu架构信息 具体的描述如下: lscpu gathers CPU architecture information from sysfs, /proc/cpuinfo and any applicable archit

String 字符串详解 / 常用API

String 详解 / 常用API 简介 String 是不可改变的字符串序列.String 为字符串常量 StringBuilder 与StringBuffer 均为可改变的字符串序列.为字符串变量 StringBuilder 是非线程安全的 (JDK 1.5) StringBuffer 是线程安全的 (JDK 1.0) 总结: String : 适用于少量的字符串操作的情况 StringBuilder : 适用于单线程下在字符缓冲区进行大量操作的情况 StringBuffer : 适用于多线

Linux下ps命令详解 Linux下ps命令的详细使用方法

Linux下ps命令详解 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)ps工具标识进程的5种状态码:D 不可中断 uninterruptible sleep (usuall

ping命令技巧详解 windows下ping命令知识大全

windows ping命令对于多数电脑爱好者都不会陌生,通过ping ip可以知道网络是否畅通或者网络传输质量如何等,是网络技术人员常用的检测网络命令,多数朋友对ping命令知道的并不多,接下来本文将与大家详细了解ping以及ping命令高级技巧等,如果觉得本文不错,记得收藏哦,或许今后有用到的时候!4m的网速是多少? 4m宽带下载速度是多少? ping的基本用法想必大家都会,可知不值到有关ping命令的高级用法呢?如下面的: Ping命令知识 Ping命令工作原理详解ping [-t] [-

企业sudo权限规划详解 (实测一个堆命令搞定)

简述问题: 随着公司的服务器越来越多,人员流动性也开始与日俱增,以往管理服务器的陈旧思想应当摒弃,公司需要有 更好更完善的权限体系,经过多轮沟通和协商,公司一致决定重新整理规划权限体系,主管明确指出权限存在的问 题,并需要解决以往的root权限泛滥问题. 我作为本次权限规划的发起人,我了解到了公司现状后,经过多次与相关员工及领导沟通,确认了公司存在的 部分问题:  运维部基本入职离职流程中存在一些账号问题: 如  离职不报备,系统权限不回收.账号密码过于简单化 这样无疑给公司的服务器及数据安全造