gulp 是一款,自动化,打包工具依赖包

你只要配置好打包规范,运行gulp,会自动的将文件打包压缩
并且可以实时监听,只要文件内容发生改变,都会自动打包
实际项目中,所有的文件,都必须是打包压缩之后的文件形式

gulp的使用过程:

1.需要安装全局的gulp依赖包

npm i -g gulp

2.创建 项目文件夹

src  存储源文件
pages   存储html文件的文件夹
js      存储js文件的文件夹
css     存储css的文件夹
images  存储图片的文件夹
dit     存储js插件的文件夹,也就是别人写好的压缩好的js程序
dist 存储压缩文件

3.初始化文件夹

npm init -y

4.在专门的js文件中,制定执行 gulp 打包程序

需要在项目文件夹中 创建一个 gulpfile.js 的文件
文件名 是 gulp 规定的 必须叫这个名字

5.下载依赖包

5-1.下载一个 项目 gulp 依赖包

npm i gulp

5-2, 下载 各种 打包规范 相关的 依赖包

css相关的打包压缩规范

npm i gulp-cssmin        打包压缩css文件的规范
npm i gulp-autoprefixer       自动添加css兼容前缀

需要在 package.json 中 写配置文件
    "browserslist":[
        "last 2 version",    所有浏览器都兼容最新的两个版本,其他版本不考虑兼容
        "FireFox > 40",      独立设定某一个浏览器的兼容版本, 火狐浏览器兼容 40 以上版本
        "IOS > 7"            苹果浏览器 兼容 7 以上版本
    ]
设定 兼容的 浏览器版本信息
根据实际需求设定兼容语法的兼容版本

在gulpfile.js中写入css打包方法

// 加载gulp依赖包
const gulp = require('gulp');
// 加载 css 依赖包
// 打包压缩css文件依赖包
const cssmin = require('gulp-cssmin');
// 自动添加前缀的依赖包
const autoprefixer = require('gulp-autoprefixer');

// css打包规范
const cssHandler = function(){
    return gulp.src( './src/css/*.css' ).pipe( autoprefixer() ).pipe( cssmin() ).pipe( gulp.dest( './dist/css' ) );
}
// 运行
cssHandler();
执行顺序是,先添加前缀,再执行打包压缩

js相关的打包规范

npm i gulp-babel           将 ES6语法格式 转化为 ES5 语法格式
npm i @babel/preset-env    与 gulp-babel 配合的 依赖包
npm i @babel/core          与 gulp-babel 配合的 依赖包
npm i gulp-uglify      将 ES5语法的 js 文件夹压缩

下载时,需要下载这四个依赖包
require 加载时, 只需要加载gulp-babel 和 gulp-uglify  这两个依赖包
配合 gulp-babel 的依赖包 gulp-babel 会自动导入
执行 babel 规范时 必须要给 babel() 添加参数,参数的形式,是固定的语法格式

babel( {presets:['@babel/env']} )

在gulpfile.js中写入js打包方法

// 加载 js依赖包
// 压缩ES5语法规范的js文件
const uglify = require('gulp-uglify');
// 将ES6语法转化为ES5
const babel = require('gulp-babel');
// js打包规范
const jsHandler = function(){
    return gulp.src( './src/js/*.js' ).pipe( babel({presets:['@babel/env']}) ).pipe( uglify() ).pipe( gulp.dest( './dist/js' ) );   
}
// 运行
jsHandler();
压缩之后的 js 文件 会默认添加 "use strict"; 执行严格模式
所谓的 严格模式 就是 对 js语法 有一个规范要求
如果不符合js语法规范,打包压缩不能执行
说是严格规范,其实没有那么严格,其中最终要的一条是
声明变量,必须要写 关键词 var let const

html相关的打包规范

npm i gulp-htmlmin

在设定打包规范中,要定义很多的配置项根据实际项目需求,设定 配置选项

在gulpfile.js中写入html打包方法

// 加载 html依赖包
const htmlmin = require('gulp-htmlmin');
// html打包规范
const htmlHandler = function(){
    return gulp.src( './src/pages/*.html' ).pipe( htmlmin({
        removeAttributeQuotes:true,          // 删除属性中的双引号
        removeComments:true,                 // 删除注释
        removeScriptTypeAttributes:true,     // 删除<script>的type="text/javascript"
        removeStyleLinkTypeAttributes:true,  //删除<style>和<link>的type="text/css" 
        collapseBooleanAttributes:true,      // 布尔属性,只写属性,不写属性值
        collapseWhitespace:true,             // 删除标签之间的空格
        minifyCSS:true,                      // 压缩内部css样式
        minifyJS:true,                       // 压缩内部js代码
    }) ).pipe( gulp.dest( './dist/pages' ) );   
}
// 运行html打包规范
htmlHandler()
虽然打包规范中有 压缩 内部css样式 和 压缩内容部 js代码
但是 实际执行过程中 不能很好的打包压缩
实际项目中,css,js代码都要写成外部文件导入模式

服务器依赖包

npm i gulp-webserver

设定 webserver 依赖包 时 也要设定 相关的配置项
// 加载 webserver依赖包
const webserver = require('gulp-webserver');
// 指定服务器规范
const webserverHandler = function(){
    // 在 webserver 规范中 gulp.src() 是 指定 服务器运行的打包文件,所在的文件夹
    return gulp.src('./dist').pipe( webserver({
        host:'127.0.0.1',           // 服务器地址
        port:'8080',                // 端口号
        open:'./pages/index.html',   // 默认执行显示的文件
        livereload:true,            // 热启动,代码有改变,自动刷新页面
    }) )
}
// 运行服务器规范
webserverHandler()
这个服务器,也是一个简易的服务器,只能响应请求,不能执行PHP等程序
并不能完成一个完整的服务器的功能

不需要打包压缩的文件,制定规范,直接存储到对应的文件夹中

例如: 音频,视频,图片,别人压缩好的js程序

5-3, 下载 del 删除依赖包 删除指定的文件文件夹

npm i del


一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。