gulp自动化构建

该博客介绍了如何使用Gulp进行前端项目的自动化构建,包括自动引入插件、清理dist目录、编译样式、脚本、页面模板以及设置开发服务器。通过Gulp插件如gulp-sass、gulp-babel、browser-sync等实现快速开发流程。
摘要由CSDN通过智能技术生成
const { src,dest,parallel,series , watch} = require('gulp')


//每一个插件都需要手动引入,比较麻烦
// 通过gulp-load-plugins可以自动引入插件
//yarn add gulp-load-plugins --dev
const loadPlugins = require('gulp-load-plugins')
const plugins = loadPlugins()

//不需要手动加载
// const plugins.sass  = require('gulp-sass')
// const plugins.babel = require('gulp-babel')
// const plugins.swig = require('gulp-swig')
// const plugins.imagemin = require('gulp-imagemin')

const del = require('del')
const browerSync = require('brower-sync') //开发服务器
const bs = browerSync.create()

//yarn add del --dev  清除dist目录下
const clean = ()=>{
  return del(['dist'])
}

//


// 样式的编译任务
// yarn add gulp-sass --dev
const style = () => {
  return src('src/assets/styles/*.scss',{base:'src'})
    .pipe(plugins.sass())
    .pipe(dest('dist'))
}


//脚本的编译任务----------
// yarn add gulp-babel --dev
// yarn add @babel/core @babel/preset-env --dev
const script = () => {
  return src('src/assets/scripts/*.js',{base:'src'})
    .pipe(plugins.babel({presets:['@babel/preset-env']}))
    .pipe(dest('dist'))
}

// src/**/*.html 代表任意子目录下的html文件
const page = () => {
  return src('src/*.html',{base:'src'})
    .pipe(plugins.swig())
    .pipe(dest('dist'))
}


const image = () => {
  return src('src/assets/images/**',{base:'src'})
    .pipe(plugins.imagemin())
    .pipe(dest('dist'))
}

const font = () => {
  return src('src/assets/fonts/**',{base:'src'})
    .pipe(plugins.imagemin())
    .pipe(dest('dist'))
}

const extra = () => {
  return src('public/**',{base:'public'})
    .pipe(dest('dist'))
}

const serve = () => {
  watch('src/assets/styles/*.scss',style)
  watch('src/assets/scripts/*.js',script)
  watch('src/*.html',page)
  // watch('src/assets/images/**',image)
  // watch('src/assets/fonts/**',font)
  // watch('public/**',extra)
  watch([
    'src/assets/images/**',
    'src/assets/fonts/**',
    'public/**'
  ],bs.reload )
  bs.init({
    notify:false,  //关闭启动成功的提示
    port:2090,   //指定使用端口号
    // open:false, 
    server:{
      baseDir:['dist','src','public'],
      routes:{
        '/node_modules':'node_modules'
      }
    }
  })
}
//开发阶段不需要编译图片,文字(图片文字只是压缩了不用编译,资源的变化另外讲)
const compile = parallel(style,script,page,)
//上线之前执行的任务
const build = series(clean,parallel(compile,image,font,extra))
const develop = series(compile,serve)
module.exports = {
  clean,
  build,
  develop
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值