前端自动化构建工具——gulp

gulp是基于流的前端自动化构建工具。

一、环境配置

gulp是基于nodejs的,所以没有 nodejs 环境的要先去安装好

然后给系统配上gulp环境

npm install -g gulp

再到某一工程目录下

跟grunt一般,也是需要package.json包依赖文件和一个入口文件 gulpfile.js(其他名字识别不了)

然后就类似的先装上gulp

npm install gulp --save-dev

最基本的使用方式是这样:(使用jshint插件校验js代码)

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

gulp.task(‘myTask‘,function(){
    return gulp.src(‘main.js‘)
              .pipe(jshint({undef: true}));
 });

然后命令行使用:gulp myTask 即可运行此程序。

二、基本用法--插件使用

gulp所支持的插件也是很多的,使用方式跟基本的nodejs差不多。

下面统一介绍几个常见的 插件,更详细用法可以到对应官方站点查看API

使用它们,就要先install,可以直接在package.json中直接配置devDependencies依赖项,然后再统一 npm install

或者一个一个地安装,依赖项会自动建立。比如安装压缩css的依赖包:

npm install gulp-minify-css --save-dev

这里直接把所以依赖全支持上,因为都要用到。

然后进入 gulpfile.js文件,先直接require

var gulp = require(‘gulp‘),
    sass = require(‘gulp-ruby-sass‘),
    autoprefixer = require(‘gulp-autoprefixer‘),
    minifycss = require(‘gulp-minify-css‘),
    jshint = require(‘gulp-jshint‘),
    uglify = require(‘gulp-uglify‘),
    imagemin = require(‘gulp-imagemin‘),
    rename = require(‘gulp-rename‘),
    concat = require(‘gulp-concat‘),
    notify = require(‘gulp-notify‘),
    cache = require(‘gulp-cache‘),
    livereload = require(‘gulp-livereload‘),
    del = require(‘del‘);

然后,新建一个任务:

gulp.task(‘styles‘,function(){
    return sass(‘static/style/test.scss‘,{style: ‘expanded‘})
        .pipe(autoprefixer(‘last 2 version‘,‘safari 5‘, ‘ie 8‘, ‘ie 9‘, ‘opera 12.1‘, ‘ios 6‘, ‘android 4‘))
        .pipe(gulp.dest(‘static/style‘))
        .pipe(rename({suffix:‘.min‘}))
        .pipe(minifycss())
        .pipe(gulp.dest(‘./build/static‘))
        .pipe(notify({message: ‘style done!‘}));

});

解释一下,其实就是 将sass文件编译成css,以流的形式pipe结果,再加css前缀,修改后缀为.min.css,并作资源压缩,最后成功后返回done的消息

命令行键入 gulp styles 成功的话看到done信息,相应css文件也顺利产生。

原本打算直接用src的形式,没料到会出错,难道是 gulp-ruby-sass 不支持这种写法?

再试一下 js的

gulp.task(‘scripts‘,function(){
    return gulp.src(‘./static/**/*.js‘)
        .pipe(jshint(‘.jshintrc‘))
        .pipe(jshint.reporter(‘default‘))
        .pipe(concat(‘main.js‘))
        .pipe(gulp.dest(‘./static/script‘))
        .pipe(rename({suffix:‘.min‘}))
        .pipe(uglify())
        .pipe(gulp.dest(‘./build/static‘))
        .pipe(notify({message: ‘script done!‘}));

});

当然,现在有两个任务了,直接gulp [task]未免太麻烦

命令行 gulp默认执行的是default的任务

所以可以这么玩:

gulp.task(‘default‘,[‘watch‘],function(){
    gulp.start(‘styles‘,‘scripts‘);
});

解释一下,第一个参数是任务1(不一定非得default),第二个参数也是任务(这个任务可以为空,代表着任务一依赖它(们),任务一执行完才轮到它,当然了,其实我现在这个顺序好像有点..)

这个watch是一个监听的任务,下头会讲到

然后gulp.start 再执行上述的那两个任务。

这样一来,命令行直接gulp就能执行这仨任务了,还能实时监听改变哦~

这个watch的监听任务:

gulp.task(‘watch‘,function(){
    gulp.watch(‘./static/style/test.scss‘,[‘styles‘]);
    livereload.listen();
    gulp.watch(‘./build/static/test.min.css‘).on(‘change‘,livereload.changed);
});

解析:第二行是指监听那个scss文件,如果有改动就执行styles的那个任务

第三行是开启浏览器端的监听模式

第四行是监听某个css文件,比如我html文件引用了这个文件,它变化时浏览器就会自动刷新。

ps: 不过默认情况下可能还是无法监听的,有两种方法:

装上 liveReload 插件(比如chrome上)

给html代码添加上:参考

<script>document.write(‘<script src="http://‘ + (location.host || ‘localhost‘).split(‘:‘)[0] + ‘:35729/livereload.js?snipver=1"></‘ + ‘script>‘)</script>

如果是远程机子,非本地的,例如: 参考

<script src="http://192.168.0.1:35729/livereload.js?snipver=1"></script>

ok 整个运行一下吧!

shenmegui .. console.log都识别不了,不管了..忽略

不过为什么jshint出错了还会继续下面的操作呢?看了还得截断一下才行

还有图片的压缩imagemin插件

.pipe(cache(imagemin({ optimizationLevel: 5, progressive: true, interlaced: true })))

以及clean插件的使用等:

gulp.task(‘clean‘, function(cb) {
    del([‘dist/assets/css‘, ‘dist/assets/js‘, ‘dist/assets/img‘], cb)
});

当然,gulp任务的执行是异步的,也就是说,任务之间的执行没有先后之分,若想保证执行顺序

只好定义依赖关系(如上述参数二的依赖)

或者使用Promise对象实现,回调函数的使用,参考

时间: 2024-12-10 16:07:37

前端自动化构建工具——gulp的相关文章

web 环境搭建00前端自动化构建工具(gulp)

web 环境搭建----前端自动化构建工具(gulp): 1----先下载安装node.js 2----然后在node.js命令行安装:npm install gulp -g (全局下载安装gulp插件) 3----然后进入到项目文件夹(命令cd 文件夹名),在项目文件夹中安装依赖文件:npm install gulp --save-dev (根据依赖文件下载gulp插件) 4----在项目文件夹目录下初始化:npm init (初始化文件) {初始化文件后项目中会出现packgae.json文

前端自动化构建工具gulp记录

什么是gulp 答:Gulp 是一款基于任务的设计模式的自动化工具,通过插件的配合解决全套前端解决方案,如静态页面压缩.图片压缩.JS合并.SASS同步编译并压缩CSS.服务器控制客户端同步刷新.. 为什么要用gulp? 1.js和css属于静态文件,很多时候浏览器存在缓存机制,为了避免缓存带来的误会,可以利用构建工具,给每一个静态文件添加一个版本号,这样浏览器就会认为是新的文件,就不存在缓存机制. 2.性能优化:文件合并,减少http请求:文件压缩,减少文件体积,加快下载速度: 3.效率提升:

前端自动化构建工具gulp使用

1. 全局安装 gulp: $ npm install --global gulp 2. 作为项目的开发依赖(devDependencies)安装: $ npm install --save-dev gulp 3. 在项目根目录下创建一个名为 package.json 的文件: 附上本人项目基本配置 { "devDependencies": { "concat": "0.0.1-security", "gulp": "

前端自动化构建工具gulp(二)

创建一个真实的例子: 创建一个项目,结构如图 gulp的使用方法通常是这样的 gulp.task('task-name', function () { return gulp.src('source-files') // source-files是任务的入口文件路径 .pipe(aGulpPlugin()) // 调用插件 .pipe(gulp.dest('destination')) //destination执行任务输出文件路径 }) 我们将使用gulp-sass插件来编译sass: 1.安

前端自动化构建工具

全局安装是把包安装在Node安装目录下的node_modules文件夹中,一般在 \Users\用户名\AppData\Roaming\ 目录下,可以使用npm root -g查看全局安装目录 本地(局部)安装是把包安装在指定项目(要在指定的根目录下输入命令)的node_modules文件夹下(若没有,会自动创建一个node_modules文件夹) 具体区别,推荐博文:  全局安装和本地(局部)安装的区别 本地安装可以让每个项目拥有独立的包,不受全局包的影响,方便项目的移动.复制.打包等,保证不

前端自动化构建工具Webpack开发模式入门指南

Webpack Webpack是时下最流行的模块打包器 它的主要任务就是将各种格式的JavaScript代码,甚至是静态文件 进行分析.压缩.合并.打包,最后生成浏览器支持的代码 特点: 代码拆分方案:webpack可以将应用代码拆分成多个块,每个块包含一个或多个模块,块可以按需异步加载,极大提升大规模单页应用的初始加载速度 智能的静态分析:webpack的智能解析器几乎可以处理任何第三方库 Loader加载器:webpack只能处理原生js模块,但是loader可以将各种资源转换为js模块 p

gulp 前端自动化构建工具

gulp是基于nodejs的自动化构建工具, 可自动化完成js css sass less html image的测试.检查.合并.压缩.格式化.浏览器自动刷新.部署文件生成.监听文件. 1:基于nodejs先装nodejs(.msi) 2:命令行装npm,npm是nodejs的包管理工具,对node插件进行安装.卸载等 npm install XX -g  安装XX插件 全局安装 --save 将保存配置保存至package.json(package.json把安装插件信息保存到此,可供其他开

前端自动化构建工具-yoman浅谈

如今随着前端技术的飞速发展,前端项目也变得越来越复杂.快速的搭建一个集成多种工具和框架的复杂前端项目也越来越成为一种需求.当然如果你要自己从0开始完全自己diy,绝对可以,只不过需要耗费一些不少的时间.既然如此要是有自动化的项目构建工具,帮你生成各种必须的配置项,你只需愉快的写代码该多方便呀.嗯,是的这样的工具或者说脚手架确实是有的,就是下面要提到的eoman.来吧,一起看一下如何使用这个工具让你的项目秒建吧. 初识yeoman yeoman是什么 yeoman是Google领头开发的一个前端构

自动化构建工具----gulp

gulp是什么? Gulp是基于node的一个自动化构建工具,开发者可以使用它构建自动化工作流程(前端集成开发环境). gulp基于流的操作. 常见构建工具:Grunt,gulp,webpack,FIS.. gulp有什么用? 网页自动刷新,CSS预处理,代码检测,图片压缩等功能,只需要简单的命令行就可以全部完成.使用它, 可以简化工作,让你把重点放在功能的开发上,同时减少人为失误,提高开发的效率和质量. gulp怎么用? .以[email protected]为例 1.初始化npm npm i