Gulp 自动化的项目构建工具

  在很多场合都会听到前端工和 node 程师推荐 Grunt 来实现项目的自动化,自动化可以自动完成 javascript/coffee/sass/less 等文件的的测试、检查、合并、压缩、格式化、部署文件生成,并监听文件在改动后重复指定的这些步骤。

  得益于 Grunt 基于任务的设计模式,这些步骤可以很好的归类执行,让开发效率得到了一次提升,但杀敌 1000,得自损 800 啊,学习曲线有点高,Gruntfile配置任务很难理解,经常容易忘记。

  Grunt.js 太复杂了,复杂到比使用和配置 Vim 都困难,之前写过得《前端自动化如何利用grunt优化项目?》,glup比较简单,配置逻辑便于理解,效率更高、健壮性更好。

  Gulp构建系统

  Gulp是一个构建系统,开发者可以使用它在网站开发过程中自动执行常见任务。

  比如编译预处理CSS,压缩JavaScript和刷新浏览器,来改进网站开发的过程。  

  官网:http://gulpjs.com/
  插件:http://gulpjs.com/plugins/http://npm.taobao.org/

  一、Gulp安装

  1.Gulp是基于Node.js构建的,所以要先安装node.js。

  2.安装Gulp的过程十分简单。首先,需要在全局安装Gulp包:

npm install -g gulp  //全局安装

  3.然后,在项目目录安装Gulp:

npm install --save-dev gulp

  4.查看gulp是否安装成功

gulp -v

  二、安装常用gulp插件

* sass的编译(gulp-ruby-sass)
* 自动添加css前缀(gulp-autoprefixer)
* 压缩css(gulp-minify-css)
* js代码校验(gulp-jshint)
* 合并js文件(gulp-concat)
* 压缩js代码(gulp-uglify)
* 压缩图片(gulp-imagemin)
* 自动刷新页面(gulp-livereload)
* 图片缓存,只有图片替换了才压缩(gulp-cache)
* 更改提醒(gulp-notify)
* 清除文件(del)

  三、创建配置文件 gulpfile.js

  在项目的根目录创建配置文件 gulpfile.js,Gulp 仅有 5 个方法就能组合出你需要的任务流程:task, run, watch, src, dest

//    js/app.js:指定确切的文件名。
//    js/*.js:某个目录所有后缀名为js的文件。
//    js/**/*.js:某个目录及其所有子目录中的所有后缀名为js的文件。
//    !js/app.js:除了js/app.js以外的所有文件。
//    *.+(js|css):匹配项目根目录下,所有后缀名为js或css的文件。

//引入gulp插件node模块
var gulp = require(‘gulp‘),
    sass = require(‘gulp-ruby-sass‘),
    autoprefixer = require(‘gulp-autoprefixer‘),
    //gminifycss = require(‘gulp-minify-css‘),
    compass = require("gulp-compass"),
    jshint = require(‘gulp-jshint‘),
    sourcemaps = require(‘gulp-sourcemaps‘),
    minicss = require(‘gulp-mini-css‘),
    connect = require(‘gulp-connect‘),
    rename = require(‘gulp-rename‘),
    uglify = require(‘gulp-uglify‘),
    imagemin = require(‘gulp-imagemin‘),
    concat = require(‘gulp-concat‘),
    livereload = require(‘gulp-livereload‘),
    notify = require(‘gulp-notify‘);

//Gulp 仅有 5 个方法就能组合出你需要的任务流程:task, run, watch, src, dest

    // 定义web模块,类似于全局的http-server
    gulp.task(‘http-server‘, function() {
        connect.server({
            livereload: true
        });
    });

    //gulp.task(name, fn)gulp模块的task方法,用于定义具体的任务。它的第一个参数是任务名,第二个参数是任务函数。
    gulp.task(‘uglify‘,function(){

        //gulp.src(glob)返回了一个可读的stream,如此行返回了./js/*.js下的全部
        gulp.src(‘./js/*.js‘)
            .pipe(uglify())
             //gulp.dest(glob)返回一个可写的stream,如此行是将文件流写入到 ./dist/js 里的对应路径下
            .pipe(gulp.dest(‘./dist/js‘))
            .pipe(notify({message:‘可以了 ok !‘}))
    })

    //压缩样式
    gulp.task(‘mincss‘,function(){
        gulp.src(‘./css/*.css‘)
            .pipe(mincss())
            .pipe(gulp.dest(‘./dist/js‘))
    })

    // 创建Compass任务
    gulp.task(‘compass‘, function() {
        gulp.src(‘./scss/**‘)
            .pipe(compass({
                comments: false,
                css: ‘css‘,
                sass: ‘scss‘,
                image: ‘img‘
            }));
    });    

    //编译sass
    gulp.task("sass",function(){
        gulp.src(‘./scss/.scss‘)
            .pipe(sourcemaps.init())
            .pipe(sass())
            .pipe(mincss())
            .pipe(sourcemaps.write(‘/‘))
            .pipe(gulp.dest(‘./css/*.css‘))
    })

    //检查js
    gulp.task("jshint",function(){
        gulp.src("./js/.js")
            .pipe(jshint())
            .pipe(jshint.reporter(‘default‘)); //导入到模块任务里面
    })

    // 合并、压缩文件
    gulp.task(‘scripts‘, function() {
        gulp.src(‘./js/*.js‘)
            .pipe(concat(‘all.js‘))
            .pipe(gulp.dest(‘./dist/js‘))
            .pipe(rename(‘all.min.js‘))
            .pipe(uglify())
            .pipe(gulp.dest(‘./dist/js‘))
            .pipe(livereload())
    });    

    //压缩图片
    gulp.task(‘imagemin‘,function(){
        gulp.src(‘./image/*.*‘)
            .pipe(imagemin())
            .pipe(gulp.dest(‘./dist/image‘))
            .pipe(notify({message:‘compress ok !‘}))
    })

    // 检测HTML变化并刷新
    gulp.task("html",function(){
        gulp.src(‘*.*‘)
            .pipe(livereload());
    })

    //定义名为"watch"的任务
    gulp.task(‘watch‘,function(){
        gulp.watch(‘./image/*.*‘);
        gulp.watch(‘./js/*.js‘);
        gulp.watch(‘./css/*.css‘);
        gulp.watch(‘./scss/*.scss‘);
    })
    //每个gulpfile.js里都应当有一个dafault任务,它是缺省任务入口(类似C语言的main()入口),运行gulp的时候实际只是调用该任务(从而来调用其它的任务)
    gulp.task(‘default‘,function(){
         //gulp.run(tasks)表示运行对应的任务,这里表示执行名
        gulp.run(‘uglify‘,‘imagemin‘,‘compass‘);
        //执行‘watch‘监听任务
        gulp.run(‘watch‘);
        // 监听文件变化
        gulp.watch([
            ‘*.*‘,
            ‘./scss/**‘,
            ‘./img/**‘,
            ‘./js/*.js‘], function() {
            livereload.listen();
            gulp.run(‘compass‘, ‘lint‘, ‘html‘, ‘sass‘,‘imagemin‘,‘scripts‘);
        });
    })

  四、运行gulp

  通过gulp+任务名称,就可以运行gulp例

gulp watch

  参考资料:Gulp.js 参考手册,自动化构建利器

       是时候搁置Grunt,耍一耍gulp了

       Gulp前端自动化工具 

       Gulp:任务自动管理工具      

时间: 2024-08-29 04:24:16

Gulp 自动化的项目构建工具的相关文章

Gulp vs Grunt 前端构建工具对比

Gulp vs Grunt 前端工程的构建工具对比 1. Grunt -> Gulp 早些年提到构建工具,难免会让人联想到历史比较悠久的Make,Ant,以及后来为了更方便的构建结构类似的Java项目而出现的Maven.Node催生了一批自动化工具,像Bower,Yeoman,Grunt等.而如今前端提到构建工具会自然想起Grunt.Java世界里的Maven提供了强大的包依赖管理和构建生命周期管理. 在JavaScript的世界里,Grunt.js是基于Node.js的自动化任务运行器.201

Maven:项目构建工具

项目构建工具 —— Maven Maven简介 Maven官网: http://maven.apache.org/ 百度百科:关键词: 项目对象模型(Project Object Model),项目管理工具,合理叙述项目间的依赖关系 作用 1)      管理jar 2)      将项目拆分若干个模块,多个模块组合成大项目 3)      热部署,热编译 仓库概念 依赖特性 Maven安装与配置 Maven下载地址:http://maven.apache.org/download.cgi 步骤

java,maven项目构建工具学习

maven是一个项目构建工具,maven可以完成项目打包,在线管理依赖包等. maven介绍参考:https://www.runoob.com/maven/maven-tutorial.html maven安装参考:https://blog.csdn.net/qq_42881421/article/details/82900849 maven修改镜像源参考:https://www.runoob.com/maven/maven-repositories.html maven修改默认仓库地址参考:h

使用nodeJS实现前端项目自动化之项目构建和文件合并

前面的话 一般地,我们使用构建工具来完成项目的自动化操作.本文主要介绍如何使用nodeJS来实现简单的项目结构构建和文件合并 项目构建 假设,最终实现的项目名称为'test',结构如下图所示 那么,首先需要先设置一个JSON对象来保存要创建的目录结构 var projectData = { 'name' : 'test', 'fileData' : [ { 'name' : 'css', 'type' : 'dir' }, { 'name' : 'js', 'type' : 'dir' }, {

JavaScript 项目构建工具 Grunt 实践:安装和创建项目框架

 Grunt 是一个基于任务的 JavaScript 项目命令行构建工具,运行于 Node.js 平台.Grunt 能够从模板快速创建项目,合并.压缩和校验 CSS & JS 文件,运行单元测试以及启动静态服务器. 安装 Grunt 推荐 Windows 用户使用 Git Shell 来进行命令行操作.安装 Windows 桌面版 GitHub 的时候会自动安装 Git Shell. GitHub for Windows 下载地址:http://windows.github.com Grunt

Gulp.js - 简单、直观的自动化项目构建工具

代码示例: var gulp = require('gulp'); var coffee = require('gulp-coffee'); var concat = require('gulp-concat'); var uglify = require('gulp-uglify'); var imagemin = require('gulp-imagemin'); var paths = { scripts: ['client/js/**/*.coffee', '!client/extern

项目构建工具之maven01

Maven 是一个项目管理工具,可以对 Java 项目进行构建.依赖管理.Maven 也可被用于构建和管理各种项目,例如 C#,Ruby,Scala 和其他语言编写的项目.Maven 曾是 Jakarta 项目的子项目,现为由 Apache 软件基金会主持的独立 Apache 项目. Nexus:nexus是用于maven项目中的仓库服务器,常称为私服.是用来存储和下载一些java依赖文件,用来配置maven中获取引用java文件的服务器. 其他工具 nginx(反向代理服务):是一个高性能的H

走进JavaWeb技术世界12:从手动编译打包到项目构建工具Maven

微信公众号[黄小斜]大厂程序员,互联网行业新知,终身学习践行者.关注后回复「Java」.「Python」.「C++」.「大数据」.「机器学习」.「算法」.「AI」.「Android」.「前端」.「iOS」.「考研」.「BAT」.「校招」.「笔试」.「面试」.「面经」.「计算机基础」.「LeetCode」 等关键字可以获取对应的免费学习资料. ? 小李的Build之路(上) 转自: 刘欣 码农翻身 2016-07-10 摘要:手工Build的烦恼要不是为了和女朋友留在一个城市,小李肯定去北上广奋斗

项目构建工具gradle

1.安装 https://gradle.org/install 2.构建一个项目 https://guides.gradle.org/creating-new-gradle-builds/ 3.build 存在的项目 https://guides.gradle.org/using-an-existing-gradle-build/ 用户手册 https://docs.gradle.org/current/userguide/userguide.html