gulp初学使用总结

之前从网上看到用gulp构建的人还是挺多的,今天试着学习了一下,基本都是从其他网站摘录的,以下是总结:

还是先贴一下项目结构吧:

我把原始的代码都放到了assets文件里边,dist是gulp生成的images,scripts,styles,所有的*.html都发布到了根目录

一、全局安装gulp:

  $ npm install --global gulp

二、创建package.json

  进入项目根目录,利用npm init根据提示,首先创建package.json文件,然后根据自己的需要,导入所依赖模块,具体的包详见下文gulpfile.js

  下载地址:https://www.npmjs.com

  比如下载gulp-minify-css,直接执行npm install --save-dev gulp-minify-css

  --save-dev部分最好都写上,这样能自动把模块和版本号添加到package.json里的devdependencies部分

  依次导入所有依赖的模块。

三、在根目录创建gulpfile.js文件

  以下是gulpfile.js的详细内容:

  

  1 // 载入外挂
  2 var gulp = require(‘gulp‘),
  3     autoprefixer = require(‘gulp-autoprefixer‘), //处理浏览器前缀
  4     minifycss = require(‘gulp-minify-css‘), //压缩css
  5     jshint = require(‘gulp-jshint‘), //检测js
  6     uglify = require(‘gulp-uglify‘), //压缩js
  7     imagemin = require(‘gulp-imagemin‘), //压缩image
  8     rename = require(‘gulp-rename‘), //重命名
  9     clean = require(‘gulp-clean‘), //清理
 10     concat = require(‘gulp-concat‘), //合并
 11     notify = require(‘gulp-notify‘), //提示
 12     cache = require(‘gulp-cache‘),
 13     livereload = require(‘gulp-livereload‘), //自动刷新
 14     rev = require(‘gulp-rev‘), //添加md5
 15     minifyhtml = require(‘gulp-minify-html‘), //压缩html
 16     revCollector = require(‘gulp-rev-collector‘);  //路径替换
 17
 18 // 样式
 19 gulp.task(‘styles‘, function() {
 20   return gulp.src(‘assets/css/main.css‘)
 21     .pipe(autoprefixer({
 22             browsers: [‘last 2 versions‘],
 23             cascade: true, //是否美化属性值 默认:true 像这样:
 24             //-webkit-transform: rotate(45deg);
 25             //        transform: rotate(45deg);
 26             remove:true //是否去掉不必要的前缀 默认:true
 27         }))
 28     .pipe(gulp.dest(‘dist/styles‘))
 29     .pipe(rename({ suffix: ‘.min‘ }))
 30     .pipe(minifycss())
 31     .pipe(rev())
 32     .pipe(gulp.dest(‘dist/styles‘))
 33     .pipe(rev.manifest())//- 生成一个rev-manifest.json
 34     .pipe(gulp.dest(‘./rev/css‘))
 35     .pipe(notify({ message: ‘Styles task complete‘ }));
 36 });
 37
 38 // 脚本
 39 gulp.task(‘scripts‘, function() {
 40   return gulp.src([‘assets/js/vendor/*.js‘,‘assets/js/*.js‘])
 41     .pipe(jshint(‘.jshintrc‘))
 42     .pipe(jshint.reporter(‘default‘))
 43     .pipe(concat(‘main.js‘))
 44     .pipe(gulp.dest(‘dist/scripts‘))
 45     .pipe(rename({ suffix: ‘.min‘ }))
 46     .pipe(uglify())
 47     .pipe(rev())
 48     .pipe(gulp.dest(‘dist/scripts‘))
 49     .pipe(rev.manifest())//- 生成一个rev-manifest.json
 50     .pipe(gulp.dest(‘./rev/js‘))
 51     .pipe(notify({ message: ‘Scripts task complete‘ }));
 52 });
 53
 54 // 图片
 55 gulp.task(‘images‘, function() {
 56   return gulp.src(‘assets/img/*‘)
 57     .pipe(cache(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true })))
 58     .pipe(gulp.dest(‘dist/images‘))
 59     .pipe(notify({ message: ‘Images task complete‘ }));
 60 });
 61
 62 //压缩Html/更新引入文件版本
 63 gulp.task(‘minify-html‘, function() {
 64   return gulp.src([‘rev/*/*.json‘,‘assets/*.html‘])
 65     .pipe( revCollector())
 66     .pipe(minifyhtml({
 67       conditionals: true,
 68       spare:true
 69     }))
 70     .pipe(gulp.dest(‘./‘))
 71     .pipe(notify({ message: ‘Htmls task complete‘ }));
 72 });
 73
 74 // 清理
 75 gulp.task(‘clean‘, function() {
 76   return gulp.src([‘dist/styles‘, ‘dist/scripts‘, ‘dist/images‘], {read: false})
 77     .pipe(clean());
 78 });
 79
 80 // 预设任务
 81 gulp.task(‘default‘, [‘clean‘], function() {
 82     gulp.start(‘styles‘, ‘scripts‘, ‘images‘);
 83 });
 84
 85 // 看守
 86 gulp.task(‘watch‘, function() {
 87
 88   // 看守所有.css档
 89   gulp.watch(‘assets/css/*.css‘, [‘styles‘]);
 90
 91   // 看守所有.js档
 92   gulp.watch(‘assets/js/**/*.js‘, [‘scripts‘]);
 93
 94   // 看守所有图片档
 95   gulp.watch(‘assets/img/**/*‘, [‘images‘]);
 96
 97   //看守所有.html档
 98   gulp.watch(‘assets/*.html‘, [‘html‘]);
 99
100   // 建立即时重整伺服器
101   var server = livereload();
102
103   // 看守所有位在 dist/  目录下的档案,一旦有更动,便进行重整
104   gulp.watch([‘dist/**‘]).on(‘change‘, function(file) {
105     server.changed(file.path);
106   });
107
108 });

四、执行gulp可执行gulpfile.js里所有的task,也可单独执行某一个任务,如gulp scripts

五、遇到的几个问题:

  1、有个png图片深度压缩的依赖模块没有安装成功,npm install imagemin-pngquant --save-dev (未安装成功),因为我这个项目所有图片已经手动压缩过了,也就暂时没去管这个问题,有时间了再好好查一下吧。

  2、检测js语法模块gulp-jshint执行的时候会报错,提示缺少.jshintrc文件,于是搜了一下需要再根目录配置一下.jshintrc   

{
    "bitwise" : true,
    "browser" : true,
    "curly" : true,
    "eqeqeq" : true,
    "eqnull" : true,
    "esnext" : true,
    "immed" : true,
    "jquery" : true,
    "latedef" : true,
    "newcap" : true,
    "noarg" : true,
    "node" : true,
    "strict" : false,
    "trailing" : true
}

  这里具体怎么配置没有详细查。。。

  3、在定义模块名称的时候,有一个用了大写,直接执行gulp没有生效,单独执行这一个任务,报错,总是报未定义,后来改成了小写,就好了,这里不清楚是为什么

    minifyHtml = require(‘gulp-minify-html‘) , 单独执行gulp minify-html任务,这一行.pipe(minifyHtml(...))总是会报minifyHtml未定义,改成小写之后没问题了。

  4、在执行压缩的时候,基本没遇到什么问题,gulp-rev和gulp-rev-collector配合使用的时候遇到一点儿问题,执行.pipe(rev.manifest())//- 生成一个rev-manifest.json

    

    

    

    把生成的json文件,分别放到了rev的css和rev的js里,这样每次执行revCollector就会查找*.html里所有的main.min.css和main.min.js文件,并且用添加md5值得新文件名替换掉。

时间: 2025-02-01 15:49:20

gulp初学使用总结的相关文章

关于grunt和gulp

grunt 是一套前端自动化工具,一个基于nodeJs的命令行工具,一般用于:① 压缩文件② 合并文件③ 简单语法检查 "自动化.对于需要反复重复的任务,例如压缩(minification).编译.单元测试.linting等,自动化工具可以减轻你的劳动,简化你的工作.当你在 Gruntfile 文件正确配置好了任务,任务运行器就会自动帮你或你的小组完成大部分无聊的工作." Grunt 基于 Node.js ,用 JS 开发,这样就可以借助 Node.js 实现跨系统跨平台的桌面端的操作

记学习前端构建工具gulp的过程,略心酸

初学前端的时候就听过友人说,前端不好学,很多软件都是要自己下载安装插件的,当时是很不以为然的,不就是下载几个软件外加安装插件吗?!怎么会很难呢!后面才发现自己真的错了. 今天刚好准备好好看看前端构建工具gulp的使用,于是乎就各种上网查资料.刚开始的时候有点摸不着头脑,这个东西不是一个软件,拿来就用,需要自己配置环境,自己根据需求安装package,完全是自己DIY的一个工具. 下面就把整个安装过程,记录下来,方便以后查看吧. 先明确几个概念:1.gulp是基于node.js环境下工作的:2.命

gulp和webpack初探

gulp 真正“流程”化工具 我记得实习刚刚进公司看到grunt,还是有点蒙,之前一直是本地开发,游览器F5,没想到前端也需要“编译工具”.所以grunt一直给我的感觉是“编译工具”,你写的很多代码还不能直接“执行”,需要这一个工具去“编译”才能上线.它去自动化了很多东西,我之后也写过一个公司用的grunt插件,只需要配置,之后加入任务执行,很方便.但当我看到gulp的代码的时候(还没开始看文档,API),我突然意识到很多grunt“不自然”的设计,gulp真正的做到了清晰的流程化的构建. gu

gulp教程(sass,livereload,md5,css压缩,js压缩,img的base64)

环境 node -v  v6.10.3 npm -v  3.10.10 package.json如下: { "name": "zhcsdata", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": &

gulp插件的使用方法

gulp插件很多,这里介绍几个比较常用的插件... 1.gulp-less:用于把less文件编译成css文件. 因为html文件中不能直接引用less文件(需要导入相关编译js文件配合才行),因此需要想方设法把相应less文件编译成less文件编译成css文件.除了考拉编译外,还可以通过gulp这个自动化构建工具实现less文件的编译. 在用gulp编译前,首先你需要安装node.js.gulp是基于node.js,理所当然需要安装node.js.npm(node package manage

git上传文件到github与gulp的简单使用

git有两种方式提交源代码到github 第一种方式通过地址提交下面介绍的是通过ssh方式上传 git使用ssh方式上传代码到githubgit首先要生成公钥和私钥 将公钥添加到github中将私钥保存在本地 + 命令:`ssh-keygen -t rsa`生成的公钥与私钥文件会在当用户目录的.ssh目录下. 把代码push到服务器时需要先pull一下(pull的作用是从远程下载git项目里的文件,然后将文件与本地的分支进行merge) git pull和gitclone区别:git pull

gulp

了解 首先我们了解一下什么是gulp, gulp是前端自动化构建工具,在开发过程中很多重复的任务,我们都可以正确的使用gulp来完成,gulp基于nodejs,

前端构建工具gulp入门教程

新建Gulpfile文件,运行gulp 安装好gulp后我们需要告诉它要为我们执行哪些任务,首先,我们自己需要弄清楚项目需要哪些任务. 检查Javascript 编译Sass(或Less之类的)文件 合并Javascript 压缩并重命名合并后的Javascript 安装依赖 npm install gulp-jshint gulp-sass gulp-concat gulp-uglify gulp-rename --save-dev 新建gulpfile文件 现在,组件都安装完毕,我们需要新建

Gulp新手入门教程

Gulp 是一个自动化工具,前端开发者可以使用它来处理常见任务: 搭建web服务器 文件保存时自动重载浏览器 使用预处理器如Sass.LESS 优化资源,比如压缩CSS.JavaScript.压缩图片 当然Gulp能做的远不止这些.如果你够疯狂,你甚至可以使用它搭建一个静态页面生成器.Gulp真的足够强大,但你必须学会驾驭它. 这是这篇文章的主要目的.帮助你了解Gulp的基础用法,助你早日完成一统天下的大业. 在我们深入了解之前,我们先来说说为什么是Gulp. 为什么是Gulp? 类似Gulp的