GULP自动化构建打包工具

169 阅读3分钟

简介

  • gulp是一个项目开发的,自动化打包构建工具,基于node环境运行
const gulp = require('gulp')

gulp API

  • task() 创建任务
gulp.task('任务名称',function(){
return 任务
})
  • src()创建一个流,用于文件系统读取,数据对象
gulp.task('任务名称',function(){
return gulp.src('读取的路径')
})
  • pipe()管道
gulp.task('任务名称',function(){
return gulp.src('读取的路径').pipe()
})
  • dest()创建一个用于将数据写入对象的文件系统流
gulp.task('任务名称',function(){
return gulp.src('读取的路径').pipe(gulp.dest('输出的路径'))
//通过pipe管道流入到dest并输出
})
  • series()将任务函数/或组合操作组成为更大的操作,这些操作将安顺序依次执行
gulp.task('任务1',function(){
return gulp.src('读取的路径').pipe()
})

gulp.task('任务2',function(){
return gulp.src('读取的路径').pipe()
})

gulp.task('seriew任务',gulp.series('任务1','任务2'))

//启动任务
gulp seriew任务
  • parallel()将任务功能/组合操作同时执行
gulp.task('任务1',function(){
return gulp.src('读取的路径').pipe()
})

gulp.task('任务2',function(){
return gulp.src('读取的路径').pipe()
})

gulp.task('parallel',gulp.series('任务1','任务2'))

//启动任务
gulp parallel
  • watch()监听文件系统 并在发生改变时运行任务

gulp完整配置文件

依赖使用npm下载

  • gulp
  • gulp-cssmin
  • gulp-sass
  • gulp-uglify
  • gulp-babel@7.01
  • babel-core
  • babel-preset-es2015
  • gulp-htmlmin
  • gulp-clean
  • gulp-webserver

gulp使用步骤

  1. 使用命令安装工具npm i gulp -g
  2. 创建文件夹本地安装npm i gulp
  3. 按照gulp项目要求组织结构

image.png

  1. 在项目根目录创建配置文件gulpfile.js
  2. 在配置文件编写代码

引入gulp模块

const gulp = require('gulp')

打包 css

//1、使用npm下载css依赖npm i gulp-cssmin -D
//2、导入gulp模块
const gulp=require('gulp')
//3、导入cssmin模块
const cssmin=require('gulp-cssmin')
gulp.task('名称',function(){
    gulp.src('路径').pipe(cssmin()).pipe(gulp.dest('路径'))
    //src读取流路径,dest输出流,pipe管道
})

打包 sass

//转为css
//下载 npm i -D gulp-sass 和 npm i sass
//引入模块
const sass = require('gulp-sass')(require('sass'))
//创建任务
gulp.task('sass', function () {
    return gulp.src('./src/scss/**')
        .pipe(sass())
        .pipe(cssmin())
        .pipe(gulp.dest('./dist/css/'))
})

打包js

//下载 - npm i -D gulp-uglify
/* 
npm i -D gulp-babel@7.0.1
npm i -D babel-core
npm i -D babel-preset-es2015

*/
//引入模块
const gulpUnlify = require('gulp-uglify')
const bebel = require('gulp-babel')
//创建任务
gulp.task('js', function () {
    return gulp.src('./src/js/**')
        .pipe(bebel({
            presets: ['es2015']
        }))
        .pipe(gulpUnlify())
        .pipe(gulp.dest('./dist/js/'))
})

打包html

//下载依赖 npm i -D gulp-htmlmin
//引入模块
const htmlmin = require('gulp-htmlmin')
//创建任务
gulp.task('html', function () {
    return gulp.src('./src/pages/**')
        .pipe(htmlmin({
            removeEmptyAttributes: true, //移出所有空属性
            collapseWhitespace: true //压缩html
        }))
        .pipe(gulp.dest('./dist/pages/'))
})

打包静态资源

//创建任务
gulp.task('static', function () {
    return gulp.src('./src/static/**')
        .pipe(gulp.dest('./dist/static/'))
})

按顺序批量执行

gulp.task('series', gulp.series('css', 'sass', 'js', 'html', 'static'))
gulp.task('parallel', gulp.parallel('css', 'sass', 'js', 'html', 'static'))

清除dist文件

//下载 npm i -D gulp-clean
//引入模块
const clean = require('gulp-clean')
//创建任务
gulp.task('clean', function () {
    return gulp.src('./dist/', {
            allowEmpty: true
        })
        .pipe(clean())
})

直接打开浏览器

//下载依赖 npm i -D gulp-webserver
//创建任务
gulp.task('webserver', function () {
    return gulp.src('./dist/')
        .pipe(webserver({
            host: 'localhost',
            port: 3000,
            livereload: true,
            open: './pages/1314.html'
        }))
})

修改内容自动刷新

/**

  • watch */
//导入模块
const webserver = require('gulp-webserver')
//创建任务
gulp.task('watch', function () {
    gulp.watch('./src/css/**', gulp.parallel('css'))
    gulp.watch('./src/sass/**', gulp.parallel('sass'))
    gulp.watch('./src/js/**', gulp.parallel('js'))
    gulp.watch('./src/pages/**', gulp.parallel('html'))
    gulp.watch('./src/static/**', gulp.parallel('static'))
})

简写

exports.default = gulp.series('clean', gulp.parallel('css', 'sass', 'js', 'html', 'static'), 'webserver', 'watch')
//直接写gulp