第三方模块Gulp
Gulp是基于node平台开发的前端构建工具
将机械化操作编写成任务,想要执行机械化操作时执行一个命令行命令任务就能自动执行了
用机器代替手工,提高开发效率
1. Gulp能做什么:
- 项目上线,HTML、CSS、 JS文件压缩合并
- 语法转换(es6、less...)
- 公共文件抽离
- 修改文件浏览器自动刷新
2. Gulp使用:
① 使用npm install gulp下载gulp文件。 注意:库文件都是本地安装,不需要加-g
② 在项目根目录下建立gulpfile.js文件。gulpfile.js文件的名字是gulp要求的,不能随意更改
③ 重构项目的文件夹结构src目录放置源代码文件dist目录放置构建后文件
④ 在gulpfile.js文件中编写任务
⑤ 在命令行工具中执行gulp任务
3. Gulp中提供的方法:
- gulp.src():获取任务要处理的文件
- gulp.dest():输出文件
- gulp.task():建立gulp任务
- gulp.watch():监控文件的变化
const gulp = require(‘gulp‘);
// 使用gulp.task()方法建立任务
gulp.task(‘first‘, () => {
// 获取要处理的文件
gulp.src(‘./src/css/base.css‘)
// 将处理后的文件输出到dist目录
.pipe(gulp.dest(‘./dist/css‘));
});注意:必须要把处理的代码写在.pipe里
如何执行这个任务呢?如果使用node gulpfile.js则执行的是gulpfile.js整个文件。而我们需要执行的是当前这个文件中的first任务,我们可以使用gulp命令来执行这个文件。
下载gulp命令行工具:npm install gulp-cli -g注意不是库文件,需要全局安装
下载完成之后,命令行中多了一个命令:gulp first
4. Gulp插件:
gulp属于轻内核的第三方模块,提供的方法非常少,所有的其他功能都是通过插件的方式实现。
- gulp-htmlmin:htm|文件压缩
- gulp-csso:压缩css
- gulp-babel:JavaScript语法转化
- gulp-less:less语法转化
- gulp-uglity:压缩混淆JavaScript
- gulp-file-include:公共文件包含
在html中先抽离出公共的代码,然后再引入,gulp中使用@@include引入:
// 引入公共的头部部分 @@include(‘./common/header.html‘);
- browsersync:浏览器实时同步
// 引用gulp模块
const gulp = require(‘gulp‘);
const htmlmin = require(‘gulp-htmlmin‘);
const fileinclude = require(‘gulp-file-include‘);
const less = require(‘gulp-less‘);
const csso = require(‘gulp-csso‘);
const babel = require(‘gulp-babel‘);
const uglify = require(‘gulp-uglify‘);
// html任务
// 1. html文件中代码的压缩操作
// 2. 抽取html文件中的公共代码
gulp.task(‘htmlmin‘, () => {
// src目录下的所有html文件
gulp.src(‘./src/*.html‘)
.pipe(fileinclude())
// 压缩html文件中的代码, collapseWhitespace为是否压缩空格
.pipe(htmlmin({ collapseWhitespace:true }))
.pipe(gulp.dest(‘dist‘));
});
// css任务
// 1. less语法转换
// 2. css代码压缩
gulp.task(‘cssmin‘, () => {
// css目录下的所有less文件以及css文件
gulp.src([‘./src/css/*.less‘, ‘./src/css/*.css‘])
// 将less语法转换为css语法
.pipe(less())
// 将css代码进行压缩
.pipe(csso())
// 将处理结果进行输出
.pipe(gulp.dest(‘dist/css‘));
});
// js任务
// 1. es6代码转换
// 2. 代码压缩
// 安装babel模块:npm install --save gulp-babel @babel/core @babel/preset-env
// @babel/core @babel/preset-env是gulp-babel所依赖的模块
gulp.task(‘jsmin‘, () => {
gulp.src(‘./src/js/*.js‘)
// 将less语法转换为css语法
.pipe(babel({
// 它可以判断当前代码的运行环境,将代码转换为当前运行环境所支持的代码
presets: [‘@babel/env‘]
}))
.pipe(uglify())
// 将处理结果进行输出
.pipe(gulp.dest(‘dist/js‘));
});
// 复制文件夹
gulp.task(‘copy‘, () => {
gulp.src(‘./src/images/*‘)
.pipe(gulp.dest(‘dist/images‘));
gulp.src(‘./src/lib/*‘)
.pipe(gulp.dest(‘dist/lib‘));
});如果想要执行一个命令,其他的所有任务就会自动执行,那就需要进行gulp构建任务:
// 构建任务 // 输入命令gulp default,则其他任务也就会自动执行 gulp.task(‘default‘, [‘htmlmin‘, ‘cssmin‘, ‘jsmin‘, ‘copy‘]);
相关推荐
星辰的笔记 2020-07-04
zhongweinan 2020-06-10
jiangfulai 2020-04-18
UndefineOrNull 2020-02-29
我有一只小松鼠 2020-02-29
UndefineOrNull 2020-03-01
hlihaihong 2020-02-18
UndefineOrNull 2020-02-12
yinuoqingqin 2020-01-13
星辰的笔记 2020-01-13
UndefineOrNull 2020-01-13
hlihaihong 2020-01-13
kaosini 2020-01-12
hlihaihong 2020-01-12
kaosini 2020-01-12
HSdiana 2019-12-25
FranksTD 2019-12-19