Gulp简单上手

简介: Gulp简单上手

Gulp


基于node平台开发的前端构建工具

将机械化操作编写成任务, 想要执行机械化操作时执行一个命令行命令任务就能自动执行了,用机器代替手工,提高开发效率。


1. Gulp的功能


  • 项目上线,HTML、CSS、JS文件压缩合并
  • 语法转换(es6、less ...)
  • 公共文件抽离
  • 修改文件浏览器自动刷新


2. Gulp的使用


1.使用npm install gulp下载gulp库文件

2.在项目根目录下建立gulpfile.js文件

3.重构项目的文件夹结构 src目录放置源代码文件 dist目录放置构建后文件

4.在gulpfile.js文件中编写任务.

5.在命令行工具中执行gulp任务


3. Gulp提供的方法


  • gulp.src():获取任务要处理的文件
  • gulp.dest():输出文件
  • gulp.task():建立gulp任务
  • gulp.watch():监控文件的变化


3.1 Gulp的第一个任务


const gulp = require('gulp')
// 使用gulp.task()方法建立任务
gulp.task('first', () => {
    // 获取要处理的文件
    gulp.src('./src/css/base.css')
    // 将处理后的文件输出到dist目录
    .pipe(gulp.dest('./dist/css'))
})

使用gulp还需要装一个gulp的命令工具,gulp-cli


安装这个工具

npm i gulp-cli -g

使用这个命令

// 这就执行了第一个gulp命令
gulp first


4. Gulp插件


  • gulp-htmlmin :html文件压缩
  • gulp-csso :压缩css
  • gulp-babel :JavaScript语法转化
  • gulp-less: less语法转化
  • gulp-uglify :压缩混淆JavaScript
  • gulp-file-include 公共文件包含
  • browsersync 浏览器实时同步


4.1 gulp-htmlmin


功能:压缩html文件

安装:

npm install --save gulp-htmlmin

简单使用:

const gulp = require('gulp');
const htmlmin = require('gulp-htmlmin');
gulp.task('minify', () => {
  return gulp.src('src/*.html')
    .pipe(htmlmin({ collapseWhitespace: true }))
    .pipe(gulp.dest('dist'));
});


4.2 gulp-file-include


功能:公共文件的包含

安装:

npm install --save-dev gulp-file-include

使用:

  1. 先将公共代码切割开来
    相同的html代码放入common/header.html中
  2. 在article.html和default.html 中引入公共代码
@@include('./common/header.html')
  1. 在gulpfile.js引入 gulp-file-include
    在html压缩插件前使用
const fileinclude = require('gulp-file-include');
gulp.task('minify', () => {
  return gulp.src('src/*.html')
    // 在压缩前先引入公共代码 gulp-file-include
    .pipe(fileinclude())
    .pipe(htmlmin({ collapseWhitespace: true }))
    .pipe(gulp.dest('dist'));
});


4.3 gulp-less gulp-csso


功能:将less转成css,压缩 gulp-csso

安装:

npm install gulp-less
npm install gulp-csso --save-dev

使用:

const less = require('gulp-less');
const csso = require('gulp-csso');
gulp.task('less', () => {
  return gulp.src(['src/css/*.less', 'src/css/*.css'])
    // 将less语法转换为css语法
    .pipe(less())
    // 将css代码进行压缩
    .pipe(csso())
    // 将处理的结果进行输出
    .pipe(gulp.dest('dist/css'))
})


4.4 gulp-babel gulp-uglify


功能:

将es6转换成es5, 压缩 js 文件

安装:

npm install --save-dev gulp-babel @babel/core @babel/preset-env
npm install --save-dev gulp-uglify

使用:

const babel = require('gulp-babel')
const uglify = require('gulp-uglify')
gulp.task('jsmin', () =>
    gulp.src('src/js/*.js')
        .pipe(babel({
          // 它可以判断当前代码的运行环境,将代码转换成当前环境所需要的代码
            presets: ['@babel/env']
        }))
        // 压缩js代码
        .pipe(uglify())
        .pipe(gulp.dest('dist/js'))
);


4.5 一条命令构建所有转换压缩任务


// 构建任务
// gulp4指定写法
gulp.task('build', gulp.parallel('minify', 'less', 'jsmin', 'copy', () => {
  // build the website.
}));

执行这条命令在命令行执行 gulp build

相关文章
|
Java 数据安全/隐私保护 Docker
Docker Desktop 启动报错 Unexpected WSL error 问题解决
Docker Desktop 启动报错 Unexpected WSL error 问题解决
1016 0
|
NoSQL Linux Apache
brpc最新安装上手指南
brpc最新安装上手指南
1243 1
brpc最新安装上手指南
|
存储 缓存 固态存储
VSAN存储故障导致虚拟机无法访问的VSAN数据恢复案例
VSAN数据恢复环境: 由四台某品牌服务器组建的VSAN集群,每台节点服务器上有两个磁盘组。每个磁盘组中有1块SSD硬盘+5块SAS硬盘,SSD作为闪存,SAS硬盘作为容量盘。 VSAN故障: VSAN集群中一个节点服务器上其中一个磁盘组中的容量盘出现故障离线,VSAN开始数据的重构迁移,数据迁移还没有完成的时候机房停电导致数据迁移中断。来电后启动所有设备后,管理员发现另一个磁盘组中的两块容量盘出现故障离线,VSAN数据存储出现问题。VSAN管理控制台可以登录,但是所有虚拟机都无法访问。
|
存储 安全 数据安全/隐私保护
Windows部署WebDAV服务并映射到本地盘符实现公网访问本地存储文件
Windows部署WebDAV服务并映射到本地盘符实现公网访问本地存储文件
1231 0
|
12月前
|
安全 Shell Linux
ssh密码忘记了怎么办
通过上述措施,不仅能够有效应对SSH密码遗忘的挑战,还能全方位加固SSH连接的安全,确保数据传输的无忧。
782 2
|
Kubernetes Devops Java
云原生技术落地实现之一KubeSphere DevOps 系统在 Kubernetes 集群上实现springboot项目的自动部署和管理 CI/CD (1/2)
云原生技术落地实现之一KubeSphere DevOps 系统在 Kubernetes 集群上实现springboot项目的自动部署和管理 CI/CD (1/2)
272 0
云原生技术落地实现之一KubeSphere DevOps 系统在 Kubernetes 集群上实现springboot项目的自动部署和管理 CI/CD (1/2)
|
Ubuntu Go Docker
24-Docker-常用命令详解-docker search
24-Docker-常用命令详解-docker search
|
Java 数据安全/隐私保护 Docker
Docker Desktop 启动报错 Unexpected WSL error 问题解决
Docker Desktop 启动报错 Unexpected WSL error 问题解决
|
API
Vue3中的ref和shallowRef、reactive和shallowReactive
Vue3中的ref和shallowRef、reactive和shallowReactive
416 1
|
ARouter Android开发 容器
现代化 Android 开发:多 Activity 多 Page 的 UI 架构
本文为现代化 Android 开发系列文章第四篇。
4757 57