前端小萌新必知必会 之 实现自定义Gulp插件

html-css015

前端小萌新必知必会 之 实现自定义Gulp插件,第1张

随着 node 的出现, javascript 的舞台越来越大,能做的事情越来越来。

本篇,我们来聊一聊前端工程化构建工具 Gulp , 并定制符合特定需求的 Gulp 插件 。

Gulp是一个自动化和增强工作流的工具包利用Gulp和JavaScript的灵活性来自动化缓慢、重复的工作流,并将它们组合成高效的构建管道。

废话说完,接下来,都是干货啦!

完全展开以后是这样的

注意, 如果希望 gulpfile 文件也能写es6 语法, 需要装个库: yarn add @babel/register。所有已配好,此处用的是 gulp.babel.js

下面一个一个来分解:

package.json

先用 yanr install 装一下需要用到的包

1. 关于 gulp 的pipe

pipe 意味管道, 很好理解,文件流通过 pipe 管道, 那么就可以在这个过程中对文件流进行操作,定制自己的需求。 所有的处理都是在 pipe 中进行的。例如上图中的例子,

!!那么同理: 我们也可以加入自己写的 gulp 插件 对文件流进行处理

2.实现

我们先来实现一个很简单的功能, 比如 在所有的 js 文件里添加注释 this is js, 在所有css 文件里添加注释 this is css, 在所有其他类型的文件里添加 this is other。 具体实现如下:

selfPlugin.js

gulp-cheerio 差=插件可以

gulp.task('indexHtml', function() {

return gulp.src('index.html')

.pipe(cheerio(function ($) {

$('script').remove()

$('link').remove()

$('body').append('<script src="app.full.min.js"></script>')

$('head').append('<link rel="stylesheet" href="app.full.min.css">')

}))

.pipe(gulp.dest('dist/'))

})

/步骤

首先要确保pc装nodeglobal环境项目文件都install gulp

npm install gulp -g (global环境)

npm install gulp --save-dev (项目环境)

项目install需要gulp插件般压缩需要

npm install gulp-minify-css gulp-concat gulp-uglify gulp-rename del --save-dev

更插件链接找

项目根目录新建gulpfile.jsrequire需要module

var gulp = require('gulp'),

minifycss = require('gulp-minify-css'),

concat = require('gulp-concat'),

uglify = require('gulp-uglify'),

rename = require('gulp-rename'),

del = require('del')

压缩css

gulp.task('minifycss', function() {

return gulp.src('src/*.css') //压缩文件

.pipe(gulp.dest('minified/css')) //输文件夹

.pipe(minifycss())//执行压缩

})

压缩js

gulp.task('minifyjs', function() {

return gulp.src('src/*.js')

.pipe(concat('main.js')) //合并所jsmain.js

.pipe(gulp.dest('minified/js')) //输main.js文件夹

.pipe(rename({suffix: '.min'})) //rename压缩文件名

.pipe(uglify()) //压缩

.pipe(gulp.dest('minified/js'))//输

})

执行压缩前先删除文件夹内容

gulp.task('clean', function(cb) {

del(['minified/css', 'minified/js'], cb)

})

默认命令cmd输入gulp执行命令

gulp.task('default', ['clean'], function() {

gulp.start('minifycss', 'minifyjs')

})

要cmd执行gulp即