『初体验』gulp自动化构建打包

本文介绍了Gulp.js的基本使用,包括主要API如gulp.src(), gulp.dest(), gulp.task()和gulp.watch()。通过实例展示了如何安装、配置和执行Gulp任务,以及如何压缩CSS和JS。此外,还提到了gulp-load-plugins插件的便利性,并详细解释了项目中的实际应用,如ES6转译、CSS和LESS压缩合并。最后,分享了在处理文件监听和错误处理时的一些技巧。

介绍

Gulp.js 是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务。

主要API

  1. gulp.src()

创建一个流,用于从文件系统 读取 Vinyl 对象。

  1. gulp.dest()

创建一个用于将 Vinyl 对象 写入 到文件系统的流。

  1. gulp.task()

在任务系统中 定义 任务。

  1. gulp.watch()

监听 globs 并在发生更改时运行任务。

安装使用

1.初始化项目
npm init -y
2.安装gulp
npm i -D gulp

建议在全局中也装上:

npm i -g gulp
3.创建gulpfile.js文件

创建gulpfile.js文件后,并在文件内写入测试内容:

function defaultTask(cb) {
  console.log('Hello Gulp!')
  cb();
}
exports.default = defaultTask
4.执行任务

在控制台中输入命令执行对应任务:

gulp default
5.测试结果

在这里插入图片描述

插件介绍

项目插件使用情况:

"devDependencies": {
   "babel-cli": "^6.26.0",
   "babel-core": "^6.26.3",
   "babel-preset-es2015": "^6.24.1",
   "gulp": "^4.0.2",
   "gulp-babel": "6",
   "gulp-clean-css": "^4.3.0",
   "gulp-concat": "^2.6.1",
   "gulp-less": "^4.0.1",
   "gulp-load-plugins": "^2.0.4",
   "gulp-rename": "^2.0.0",
   "gulp-uglify": "^3.0.2",
   "gulp-util": "^3.0.8"
 }
  • gulp-load-plugins

gulp插件加载神器:
用了该插件后,无需手动require插件,它会自动检测到devDependencies内属于gulp的插件并挂载到自身中。

var gulp = require('gulp')
// 无需手动引入插件
// var cleanCss = require('gulp')
var plugins = require('gulp-load-plugins')()

// 使用插件:plugins.cleanCss (短横线 转换为 驼峰)
  • gulp-clean-css

该插件用于压缩css文件

gulp.src('src/css/*.css') // 此处指定输如的文件
    .pipe(plugins.cleanCss())
    .pipe(gulp.dest('dist')) // 此处指定输出的文件夹

项目实际应用

功能:

  1. 将es6编译为es5
  2. 压缩并合并js文件
  3. 编译less文件
  4. 压缩并合并css文件
  5. 监听文件修改自动执行构建任务
  6. 任务执行时报错标识
var gulp = require('gulp')
var plugins = require('gulp-load-plugins')()

var jsPath = [
    'src/js/*.js'
]
var cssPath = [
    'src/css/*.css'
]
var lessPath = [
    'src/css/*.less'
]
// js任务
gulp.task('jscompress',done=>{
    console.log('Gulp js...')
    gulp.src(jsPath)
    .pipe(plugins.babel({
        presets:['es2015']
    }))
    .pipe(plugins.uglify())
    .on('error',function(err){
        plugins.util.log(plugins.util.colors.red('[Error]'),err.toString())
    })
    .pipe(plugins.concat('mathEdit.min.js'))
    .pipe(gulp.dest('dist'))

    done()
})
// less任务
gulp.task('lesstask',done=>{
    console.log('Gulp less...')

    gulp.src(lessPath)
    .pipe(plugins.less())
    .pipe(gulp.dest('src/css'))
    .on('end',function(){
        done()
    })
})

// css任务
gulp.task('csstask',done=>{
    console.log('Gulp css...')
    gulp.src(cssPath)
    .pipe(plugins.cleanCss())
    .on('error',function(err){
        plugins.util.log(plugins.util.colors.red('[Error]'),err.toString())
    })
    .pipe(plugins.concat('mathEdit.min.css'))
    .pipe(gulp.dest('dist'))
    done()
})

gulp.task('csscompress',gulp.series('lesstask','csstask'))

// 监听文件并自动构建
gulp.task('auto', function () {
    gulp.watch(jsPath, gulp.series('jscompress'));
    gulp.watch(lessPath, gulp.series('csscompress'));
});

exports.lib = gulp.series('jscompress','csscompress')

技巧

  • 等待less编译出文件后,再进行css文件压缩合并

解决:监听end事件,在end事件进行回调:

// less任务
gulp.task('lesstask',done=>{
    console.log('Gulp less...')
    gulp.src(lessPath)
    .pipe(plugins.less())
    .pipe(gulp.dest('src/css'))
    
    // 监听end事件
    .on('end',function(){
        done()
    })
})
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值