gulp怎么玩
前端工作流
场景
vue-cli ??? 自动打包
vue build打包时候其实就是在文件的合并,压缩,优化,到dist文件夹
开始
yarn add gulp -S
const gulp = require('gulp')
// 任务名、任务事
gulp.task('hello', function () {
console.log('Gulp负责前端开发阶段的任务,文件的合并,压缩,优化')
})
执行任务:
gulp hello
任务数组,默认就不用写了
gulp.task('default', ['hello'])
复制
// src 代表根目录
gulp.task('copy-index', function() {
return gulp.src('index.html')
.pipe(gulp.dest('dist'))
})
直接打包整个文件夹的拷贝和处理
// *.*就是全部文件
// */* 走一级,匹配下一层
// **/* 所有都要
gulp.task('images', function () {
return gulp.src('images/icons/*.{png,jpg}')
.pipe(gulp.dest('dist/images/icon'))
})
打包多个
gulp.task('data', function () {
return gulp.src(['xml/*.xml','json/*.json'])
.pipe(gulp.dest('dist/data'))
})
跳过一些文件
排除类似secret-01.json的文件
return gulp.src(['xml/*.xml','json/*.json','!json/secret-*.json'])
.pipe(gulp.dest('dist/data'))
监视watch
gulp.task('copy-index', function() {
return gulp.src('index.html')
.pipe(gulp.dest('dist'))
})
gulp.task('watch', function () {
gulp.watch('index.html', ['copy-index'])
})
开放监听
gulp watch
sass转css
安装包
yarn add gulp-sass -S
npm i gulp-sass --save-dev
yarn add --dev gulp-sass
pipe过一下
gulp.task('sass', function() {
gulp.src('stylesheet/**/*.scss')
.pipe(sass())
.pipe(gulp.dest('dist/css'))
})
热更新
yarn add --dev gulp-connect
然后
const connect = require('gulp-connect')
gulp.task('server',function() {
connect.server({
root: 'dist/',
port: 3000,
livereload: true
})
})
gulp.task('watch', function() {
gulp.watch('index.html', ['copy-index'])
})
gulp.task('copy-index', function() {
return gulp.src('index.html')
.pipe(gulp.dest('dist'))
.pipe(connect.reload())
})
gulp.task('default', ['server', 'watch'])
合并文件,优化减少并发
yarn add --dev gulp-concat
<script></script>
<script></script>
这样引入??有两个请求哦!!减少请求数量!
gulp.task('script', function() {
return gulp.src(['javascripts/jquery.js',
'javascripts/modernizr.js'])
.pipe(concat('vendor.js'))
.pipe(gulp.dest('dist/js'))
})
压缩重命名
const uglify = require('gulp-uglify')
const rename = require('gulp-rename')
gulp.task('zip', function() {
return gulp.src(['javascripts/jquery.js',
'javascripts/modernizr.js'])
.pipe(concat('vendor.js'))
.pipe(gulp.dest('dist/js'))
.pipe(uglify())
.pipe(rename('vendor.min.js'))
.pipe(gulp.dest('dist/js'))
})
##压缩css
const minify = require('gulp-minify-css')
gulp.task('minify', function() {
gulp.src('stylesheet/*/.scss')
.pipe(sass())
.pipe(gulp.dest('dist/css'))
.pipe(minify())
.pipe(rename('style.min.css'))
.pipe(gulp.dest('dist/css'))
})
##图片优化
const imagemin = require('gulp-imagemin')
gulp.task('imagemin', function() {
return gulp.src('images/icons/*.{png,jpg}')
.pipe(gulp.dest('dist/images/icon'))
.pipe(imagemin())
.pipe(gulp.dest('dist/images/icon'))
})
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。