一. 安装Node和gulp

gulp 是基于 node 实现 Web 前端自动化开发的工具,利用它能够极大的提高开发效率。

在 Web 前端开发工作中有很多“重复工作”,比如压缩CSS/JS文件。而这些工作都是有规律的。找到这些规律,并编写 gulp 配置代码,让 gulp 自动执行这些“重复工作”。

安装node: 由于gulp是基于node实现的,所以要先安装node

node安装

安装gulp

 npm install -g gulp

 安装

 gulp -v

查看版本

二.使用gulp压缩Js

压缩js文件可以降低js文件的大小,提高页面打开速度。

2.1 方法

  • 找到要压缩的所有的js文件,压缩它们,将压缩后的文件放在 dist/js/目录下

2.2 步骤

1. 创建gulp-demo文件夹,使用npm初始化项目

 npm init

2. 在项目根目录新建一个gulpfile.js文件

  • gulp所有的配置都在这个文件里面

3. 在gulpfile文件中书写压缩js文件的代码,安装gulp 和 gulp-uglify压缩模块

 //获取gulp对象
 const gulp = require("gulp")
 // 压缩js文件的对象,使用之前需要安装
 // 安装方法:npm i gulp-uglify -D
 const uglify = require("gulp-uglify")
 // 定义压缩文件的处理方法
 function script(){
     //1. 匹配要所有压缩的js文件
     gulp.src('js/*.js')
     //2. 压缩文件
    .pipe(uglify())
     //3. 将压缩后的文件写入指定目录
    .pipe(gulp.dest('dist/js'))
 }
 //将定义好的压缩方法暴露给外界
 exports.script = gulp.series(script);
 npm i gulp gulp-uglify -D

4. 在项目根目录创建js文件夹并且创建需要测试的js文件

5. 在命令行输入如下命令运行

  • 由于我们导入的为 script,所以这里输入gulp script命令即可
 gulp script
  • 压缩后的目录如下所示

6. 升级压缩功能,每次文件修改之后,自动压缩打包

 //获取gulp对象
 const gulp = require("gulp")
 // 压缩js文件的对象,使用之前需要安装
 // 安装方法:npm i gulp-uglify -D
 const uglify = require("gulp-uglify")
 // 定义压缩文件的处理方法
 function script(){
     //1. 匹配要所有压缩的js文件
     gulp.src('js/*.js')
     //2. 压缩文件
    .pipe(uglify())
     //3. 将压缩后的文件写入指定目录
    .pipe(gulp.dest('dist/js'))
 }
 //创建监听js文件的方法
 function autoScript(){
     // 创建监听对象
     var watcher = gulp.watch("js/*.js");
     //分别监听 change,add,unlink事件
     watcher.on("change",function(path,stats){
         console.log(`${path} has been changed!`);
    });
     watcher.on("add",function(path,stats){
         console.log(`${path} has been add!`);
    });
     watcher.on("unlink",function(path,stats){
         console.log(`${path} has been unlink!`);
    })
 }
 //将定义好的压缩方法暴露给外界,并作为gulp的默认值
 // exports.script = gulp.series(script,autoScript);
 exports.autoScript = gulp.parallel(script,autoScript);
  • 运行
 gulp autoScript

7. 使用 exports.default 定义默认任务

 //如上所示,我们使用 export script 和 export autoScript命令执行任务
 //可以通过 exports.default 关键字指定默认任务
 exports.default = gulp.parallel(script,autoScript);
  • 设置完成之后,在命令行输入 gulp即可启动任务
 gulp
  • 完整项目目录:gulp-demo(压缩js)
  • 注意:所有的项目,下载之后先在项目根目录要运行 npm i命令安装模块

三. 压缩CSS文件

CSS文件压缩过程类似于Js文件,这里做简单介绍

3.1 步骤

1.创建gulpfile.js文件

2. 安装压缩CSS文件需要用到的模块

 npm i gulp gulp-minify-css -D

3. 在项目根目录创建CSS文件夹,在CSS文件夹下面创建要测试的CSS文件

4. 编写压缩代码,到处任务调用

 //获取gulp对象
 const gulp = require("gulp")
 //获取压缩 css文件的方法
 const minifyCss = require("gulp-minify-css")
 // 定义压缩文件的处理方法
 function css(){
    //1. 匹配要所有压缩的css文件
    gulp.src('css/*.css')
    //2. 压缩文件
    .pipe(minifyCss())
    //3. 将压缩后的文件写入指定目录
    .pipe(gulp.dest('dist/css'))
 }
 //升级:自动监听文件的改变,
 //创建监听js文件的方法
 function autoCss(){
    // 创建监听对象
    var watcher = gulp.watch("css/*.css");
    //分别监听 change,add,unlink事件
    watcher.on("change",function(path,stats){
        console.log(`${path} has been changed!`);
    });
    watcher.on("add",function(path,stats){
        console.log(`${path} has been add!`);
    });
    watcher.on("unlink",function(path,stats){
        console.log(`${path} has been unlink!`);
    })
 }
 //将定义好的压缩方法暴露给外界,并作为gulp的默认值
 // exports.default = gulp.series(css,autoCss);
 exports.autoCss = gulp.parallel(css,autoCss);

5. 运行文件

 gulp autoCss
  • 完整项目目录:gulp-demo(压缩CSS)
  • 注意:所有的项目,下载之后先在项目根目录要运行 npm i命令安装模块

四. 压缩图片

方法同上压缩js 和CSS文件,以下给出压缩图片的依赖模块,以及示例代码

依赖模块: gulp ,gulp-imagemin

代码示例:

 //获取gulp对象
 const gulp = require("gulp")
 //获取压缩 图片文件的对象
 const imagemin = require("gulp-imagemin")
 // 定义压缩文件的处理方法
 function images(){
     //1. 匹配要所有压缩的图片文件
     gulp.src('imgs/*.*')
     //2. 压缩文件
    .pipe(imagemin({
         progressive: true
    }))
     //3. 将压缩后的文件写入指定目录
    .pipe(gulp.dest('dist/imgs'))
 }
 //升级:自动监听文件的改变,
 //创建监听图片文件的方法
 function autoImages(){
     // 创建监听对象
     var watcher = gulp.watch("imgs/*.*");
     //分别监听 change,add,unlink事件
     watcher.on("change",function(path,stats){
         console.log(`${path} has been changed!`);
    });
     watcher.on("add",function(path,stats){
         console.log(`${path} has been add!`);
    });
     watcher.on("unlink",function(path,stats){
         console.log(`${path} has been unlink!`);
    })
 }
 //将定义好的压缩方法暴露给外界,并作为gulp的默认值
 // exports.images = gulp.series(images,autoImages);
 exports.autoImages = gulp.parallel(images,autoImages);
  • 完整项目目录:gulp-demo(压缩图片)
  • 注意:所有的项目,下载之后先在项目根目录要运行 npm i命令安装模块

五. 编译Less文件

模块: gulp,gulp-less

示例:

 //获取gulp对象
 const gulp = require("gulp")
 //获取压缩 less文件的对象
 const gulpLess = require("gulp-less")
 // 定义压缩文件的处理方法
 function less(){
     //1. 匹配要所有压缩的less文件
     gulp.src('less/*.less')
     //2. 压缩文件
    .pipe(gulpLess())
     //3. 将压缩后的文件写入指定目录
    .pipe(gulp.dest('dist/less'))
 }
 //升级:自动监听文件的改变,
 //创建监听less文件的方法
 function autoLess(){
     // 创建监听对象
     var watcher = gulp.watch("less/*.less");
     //分别监听 change,add,unlink事件
     watcher.on("change",function(path,stats){
         console.log(`${path} has been changed!`);
    });
     watcher.on("add",function(path,stats){
         console.log(`${path} has been add!`);
    });
     watcher.on("unlink",function(path,stats){
         console.log(`${path} has been unlink!`);
    })
 }
 //将定义好的压缩方法暴露给外界,并作为gulp的默认值
 // exports.images = gulp.series(less,autoLess);
 exports.autoLess = gulp.parallel(less,autoLess);
  • 完整项目目录:gulp-demo(编译less)
  • 注意:所有的项目,下载之后先在项目根目录要运行 npm i命令安装模块

六. 编译Sass文件

模块: gulp,gulp-sass

示例:

 //获取gulp对象
 const gulp = require("gulp")
 //获取压缩 sass文件的对象
 const gulpSass = require("gulp-sass")
 // 定义压缩文件的处理方法
 function sass(){
     //1. 匹配要所有压缩的sass文件
     gulp.src('sass/*.scss')
     //2. 压缩文件
    .pipe(gulpSass())
     //3. 将压缩后的文件写入指定目录
    .pipe(gulp.dest('dist/sass'))
 }
 //升级:自动监听文件的改变,
 //创建监听sass文件的方法
 function autoSass(){
     // 创建监听对象
     var watcher = gulp.watch("sass/*.scss");
     //分别监听 change,add,unlink事件
     watcher.on("change",function(path,stats){
         console.log(`${path} has been changed!`);
    });
     watcher.on("add",function(path,stats){
         console.log(`${path} has been add!`);
    });
     watcher.on("unlink",function(path,stats){
         console.log(`${path} has been unlink!`);
    });
     watcher.on("error",function(error){
         console.log(error);
    })
 }
 //将定义好的压缩方法暴露给外界,并作为gulp的默认值
 // exports.images = gulp.series(images,autoImages);
 exports.autoSass = gulp.parallel(sass,autoSass);

完整项目目录:gulp-demo(编译sass)

注意:所有的项目,下载之后先在项目根目录要运行 npm i命令安装模块

以上就是前端必会的轻量打包工具gulp使用详解的详细内容,更多关于前端轻量打包工具gulp的资料请关注Devmax其它相关文章!

前端必会的轻量打包工具gulp使用详解的更多相关文章

  1. 前端实现背景虚化但内容清晰且自适应 的实例代码

    这篇文章主要介绍了前端实现背景虚化但内容清晰且自适应 的实例代码,需要的朋友可以参考下

  2. ios – 如何使用MagicalRecord设置Core Data轻量级迁移?

    解决方法MagicalRecord的重点在于为您管理:查看有关CoreData堆栈设置here的文档.

  3. ios – 如何在Swift中进行轻量级CoreData迁移

    如果没有,我该如何添加?

  4. EFColorPicker - 一个纯 Swift 的轻量级 iOS 颜色选择器

    EFColorPicker是一个纯Swift的轻量级iOS颜色选择器,受MSColorPicker启发。或执行以下命令:环境iOS8.0+Xcode9.0+Swift4.0+安装EFColorPicker可以通过CocoaPods进行获取。只需要在你的Podfile中添加如下代码就能实现引入:备注EFColorPicker的第一个版本从MSColorPicker转换而来,在此对MSColorPicker的作者sgl0v表示感谢!作者EyreFree,eyrefree@eyrefree.org协议EFQRC

  5. android – 轻量级跨平台C GUI(OpenGL)

    我正在寻找一个轻量级的跨平台GUI库,用于不同的信号处理应用程序.ANSI-C程序必须与其静态链接,并且大小很重要.完成的应用程序必须在iPad,iPhone,Android,Ubuntu,Leopard,Windows等平台上具有相同的外观.Qt不合适,因为它太大了,并且在iOS设备上不起作用.我倾向于基于OpenGL的GUI库,因为每个现代目标平台都支持OpenGL,并且OpenGL应用程序在

  6. Angular.js项目中使用gulp实现自动化构建以及压缩打包详解

    基于流的前端自动化构建工具,利用gulp可以提高前端开发效率,特别是在前后端分离的项目中。下面这篇文章主要给大家介绍了关于在Angular.js项目中使用gulp实现自动化构建以及压缩打包的相关资料,需要的朋友可以参考下。

  7. gulp加批处理(.bat)实现ng多应用一键自动化构建

    这篇文章主要给大家介绍了利用gulp加上批处理(.bat)实现ng多应用一键自动化构建的相关资料,文中介绍的很详细,需要的朋友可以参考借鉴,下面来一起看看吧。

  8. 前端token中4个存储位置的优缺点说明

    这篇文章主要介绍了前端token中4个存储位置的优缺点说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  9. ajax请求前端跨域问题原因及解决方案

    这篇文章主要为大家介绍了ajax请求前端跨域问题原因及解决方案,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步

  10. 在Mac OS上安装使用Node.js的项目自动化构建工具Gulp

    Gulp是一个在使用上比Grunt更加简洁的自动化工具(文中附有对比),和Node的npm包管理器配合使用非常方便,下面就记录一下在Mac OS上安装使用Node.js的项目自动化构建工具Gulp的方法:

随机推荐

  1. Error: Cannot find module ‘node:util‘问题解决

    控制台 安装 Vue-Cli 最后一步出现 Error: Cannot find module 'node:util' 问题解决方案1.问题C:\Windows\System32>cnpm install -g @vue/cli@4.0.3internal/modules/cjs/loader.js:638 throw err; &nbs

  2. yarn的安装和使用(全网最详细)

    一、yarn的简介:Yarn是facebook发布的一款取代npm的包管理工具。二、yarn的特点:速度超快。Yarn 缓存了每个下载过的包,所以再次使用时无需重复下载。 同时利用并行下载以最大化资源利用率,因此安装速度更快。超级安全。在执行代码之前,Yarn 会通过算法校验每个安装包的完整性。超级可靠。使用详细、简洁的锁文件格式和明确的安装算法,Yarn 能够保证在不同系统上无差异的工作。三、y

  3. 前端环境 本机可切换node多版本 问题源头是node使用的高版本

    前言投降投降 重头再来 重装环境 也就分分钟的事 偏要折腾 这下好了1天了 还没折腾出来问题的源头是node 使用的高版本 方案那就用 本机可切换多版本最终问题是因为nodejs的版本太高,导致的node-sass不兼容问题,我的node是v16.14.0的版本,项目中用了"node-sass": "^4.7.2"版本,无法匹配当前的node版本根据文章的提

  4. nodejs模块学习之connect解析

    这篇文章主要介绍了nodejs模块学习之connect解析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  5. nodejs npm package.json中文文档

    这篇文章主要介绍了nodejs npm package.json中文文档,本文档中描述的很多行为都受npm-config(7)的影响,需要的朋友可以参考下

  6. 详解koa2学习中使用 async 、await、promise解决异步的问题

    这篇文章主要介绍了详解koa2学习中使用 async 、await、promise解决异步的问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  7. Node.js编写爬虫的基本思路及抓取百度图片的实例分享

    这篇文章主要介绍了Node.js编写爬虫的基本思路及抓取百度图片的实例分享,其中作者提到了需要特别注意GBK转码的转码问题,需要的朋友可以参考下

  8. CentOS 8.2服务器上安装最新版Node.js的方法

    这篇文章主要介绍了CentOS 8.2服务器上安装最新版Node.js的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  9. node.js三个步骤实现一个服务器及Express包使用

    这篇文章主要介绍了node.js三个步骤实现一个服务器及Express包使用,文章通过新建一个文件展开全文内容,具有一定的参考价值,需要的小伙伴可以参考一下

  10. node下使用UglifyJS压缩合并JS文件的方法

    下面小编就为大家分享一篇node下使用UglifyJS压缩合并JS文件的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

返回
顶部