JavaScript系列教程

JavaScript学习笔记(三十六)-- GULP

2020-08-01  本文已影响0人  千锋HTML5学院

GULP

什么是自动化打包构建工具

安装 GULP

# 使用 npm 安装全局依赖 gulp
# 我们这里安装一个 3.9.1 版本的就好了
$ npm install --global gulp@3.9.1
$ gulp --version

使用 GULP

- gulp_demo    项目文件夹
  - src        项目源码
    + css      css 文件夹
    + js       js 文件夹
    + pages    html 文件夹
    + sass     sass 文件夹
    + lib      第三方文件夹
    + static   静态资源文件夹
$ cd gulp_demo
$ npm init -y
- gulp_demo
  + src 
  + package.json

项目 GULP 配置

$ cd gulp_demo
$ npm install -D gulp@3.9.1
- gulp_demo
  + node_modules         依赖包目录
  + src                  项目源码
  + gulpfile.js          gulp 配置文件
  + package-lock.json    依赖下载版本 json 文件
  + package.json         项目管理 json 文件

打包 CSS 文件

// 我是 gulpfile.js 文件
​
// 1. 引入 gulp
const gulp = require('gulp')
// 我是 gulpfile.js 文件
​
// 1. 引入 gulp
const gulp = require('gulp')
​
​
// 2. 创建一个 css 的任务
//   gulp.task() 是用来创建任务的
//   参数一: 任务名称
//   参数二: 一个函数(这个任务要做什么事情)
gulp.task('css', function () {
 
})
npm i -D gulp-cssmin
// 我是 gulpfile.js 文件
​
// 1. 引入 gulp
const gulp = require('gulp')
​
// 2. 引入 gulp-cssmin
const cssmin = require('gulp-cssmin')
​
​
// 2. 创建一个 css 的任务
gulp.task('css', function () {
 return gulp
  .src('./src/css/**')   // 对哪些文件进行操作
  .pipe(cssmin())        // 都做什么,这里做的就是进行 css 压缩
  .pipe(gulp.dest('./dist/css'))  // 把压缩完毕的文件放在 dist 文件夹下的 css 文件夹   
})
# 表示运行 gulpfils.js 配置文件中的 css 任务 
$ gulp css 

自动添加前缀

// 我是 gulpfile.js 文件

// 1. 引入 gulp
const gulp = require('gulp')

// 2. 引入 gulp-cssmin
const cssmin = require('gulp-cssmin')

// 2-1. 引入 gulp-autoprefixer 
const autoPrefixer = require('gulp-autoprefixer')


// 2. 创建一个 css 的任务
gulp.task('css', function () {
    return gulp
        .src('./src/css/**')   
        .pipe(autoPrefixer({
            browsers: ['last 2 versions']
        }))
        .pipe(cssmin())       
        .pipe(gulp.dest('./dist/css'))  
})

打包 SASS 文件

  1. sass 解析成 css

  2. 自动添加前缀

  3. 压缩一下

  4. 放到对应的文件夹中

// 我是 gulpfile.js 文件

// 1. 引入 gulp
const gulp = require('gulp')

// 2. 引入 gulp-cssmin
const cssmin = require('gulp-cssmin')

// 2-1. 引入 gulp-autoprefixer 
const autoPrefixer = require('gulp-autoprefixer')

// 2-2. 引入 gulp-sass
const sass = require('gulp-sass')


// 2-1. 创建一个 css 的任务
gulp.task('css', function () {
    return gulp
        .src('./src/css/**')   
        .pipe(autoPrefixer({
            browsers: ['last 2 versions']
        }))
        .pipe(cssmin())       
        .pipe(gulp.dest('./dist/css'))  
})

// 2-2. 创建一个 sass 任务
gulp.task('sass', function () {
    return gulp
        .src('./src/sass/**')
        .pipe(sass())
        .pipe(autoPrefixer())
        .pipe(cssmin())
        .pipe(gulp.dest('./dist/css'))
})
# 执行 sass 任务
$ gulp sass

打包 JS 文件

npm i -D gulp-uglify 
// 我是 gulpfile.js 文件

// 1. 引入 gulp
const gulp = require('gulp')

// 2-1. 引入 gulp-cssmin
const cssmin = require('gulp-cssmin')

// 2-2. 引入 gulp-autoprefixer 
const autoPrefixer = require('gulp-autoprefixer')

// 2-3. 引入 gulp-sass
const sass = require('gulp-sass')

// 3-1. 引入 gulp-uglify
const uglify = require('gulp-urlify')


// 2-1. 创建一个 css 的任务
gulp.task('css', function () {
    return gulp
        .src('./src/css/**')   
        .pipe(autoPrefixer({
            browsers: ['last 2 versions']
        }))
        .pipe(cssmin())       
        .pipe(gulp.dest('./dist/css'))  
})

// 2-2. 创建一个 sass 任务
gulp.task('sass', function () {
    return gulp
        .src('./src/sass/**')
        .pipe(sass())
        .pipe(autoPrefixer())
        .pipe(cssmin())
        .pipe(gulp.dest('./dist/css'))
})

// 3. 创建一个 js 任务
gulp.task('js', function () {
    return gulp
        .src('./src/js/**')
        .pipe(uglify())
        .pipe(gulp.dest('./dist/js'))
})
# 执行 js 任务
$ gulp js 

编译 ES6 语法

// 我是 gulpfile.js 文件

// 1. 引入 gulp
const gulp = require('gulp')

// 2-1. 引入 gulp-cssmin
const cssmin = require('gulp-cssmin')

// 2-2. 引入 gulp-autoprefixer 
const autoPrefixer = require('gulp-autoprefixer')

// 2-3. 引入 gulp-sass
const sass = require('gulp-sass')

// 3-1. 引入 gulp-uglify
const uglify = require('gulp-urlify')

// 3-2. 引入 gulp-babel
//      es6 转 es5 虽然需要下载三个依赖,但是只需要引入一个 gulp-babel 就可以了
const babel = require('gulp-babel')


// 2-1. 创建一个 css 的任务
gulp.task('css', function () {
    return gulp
        .src('./src/css/**')   
        .pipe(autoPrefixer({
            browsers: ['last 2 versions']
        }))
        .pipe(cssmin())       
        .pipe(gulp.dest('./dist/css'))  
})

// 2-2. 创建一个 sass 任务
gulp.task('sass', function () {
    return gulp
        .src('./src/sass/**')
        .pipe(sass())
        .pipe(autoPrefixer())
        .pipe(cssmin())
        .pipe(gulp.dest('./dist/css'))
})

// 3. 创建一个 js 任务
gulp.task('js', function () {
    return gulp
        .src('./src/js/**')
        .pipe(babel({
            presets: ['es2015']
        }))
        .pipe(uglify())
        .pipe(gulp.dest('./dist/js'))
})
# 执行 js 任务
$ gulp js

打包 HTML 文件

// 我是 gulpfile.js 文件

// 1. 引入 gulp
const gulp = require('gulp')

// 2-1. 引入 gulp-cssmin
const cssmin = require('gulp-cssmin')

// 2-2. 引入 gulp-autoprefixer 
const autoPrefixer = require('gulp-autoprefixer')

// 2-3. 引入 gulp-sass
const sass = require('gulp-sass')

// 3-1. 引入 gulp-uglify
const uglify = require('gulp-urlify')

// 3-2. 引入 gulp-babel
//      es6 转 es5 虽然需要下载三个依赖,但是只需要引入一个 gulp-babel 就可以了
const babel = require('gulp-babel')

// 4. 引入 gulp-htmlmin
const htmlmin = require('gulp-htmlmin')


// 2-1. 创建一个 css 的任务
gulp.task('css', function () {
    return gulp
        .src('./src/css/**')   
        .pipe(autoPrefixer({
            browsers: ['last 2 versions']
        }))
        .pipe(cssmin())       
        .pipe(gulp.dest('./dist/css'))  
})

// 2-2. 创建一个 sass 任务
gulp.task('sass', function () {
    return gulp
        .src('./src/sass/**')
        .pipe(sass())
        .pipe(autoPrefixer())
        .pipe(cssmin())
        .pipe(gulp.dest('./dist/css'))
})

// 3. 创建一个 js 任务
gulp.task('js', function () {
    return gulp
        .src('./src/js/**')
        .pipe(babel({
            presets: ['es2015']
        }))
        .pipe(uglify())
        .pipe(gulp.dest('./dist/js'))
})

// 4. 创建一个 html 任务
gulp.task('html', function () {
    return gulp
        .src('./src/pages/**')
        .pipe(htmlmin({
            removeEmptyAttibutes: true, // 移出所有空属性
            collapseWhitespace: true // 压缩 html
        }))
        .pipe(gulp.dest('./dist/pages'))
})
# 运行 html 任务
$ gulp html 

处理 LIB 和 STATIC 文件

// 我是 gulpfile.js 文件

// 1. 引入 gulp
const gulp = require('gulp')

// 2-1. 引入 gulp-cssmin
const cssmin = require('gulp-cssmin')

// 2-2. 引入 gulp-autoprefixer 
const autoPrefixer = require('gulp-autoprefixer')

// 2-3. 引入 gulp-sass
const sass = require('gulp-sass')

// 3-1. 引入 gulp-uglify
const uglify = require('gulp-urlify')

// 3-2. 引入 gulp-babel
//      es6 转 es5 虽然需要下载三个依赖,但是只需要引入一个 gulp-babel 就可以了
const babel = require('gulp-babel')

// 4. 引入 gulp-htmlmin
const htmlmin = require('gulp-htmlmin')


// 2-1. 创建一个 css 的任务
gulp.task('css', function () {
    return gulp
        .src('./src/css/**')   
        .pipe(autoPrefixer({
            browsers: ['last 2 versions']
        }))
        .pipe(cssmin())       
        .pipe(gulp.dest('./dist/css'))  
})

// 2-2. 创建一个 sass 任务
gulp.task('sass', function () {
    return gulp
        .src('./src/sass/**')
        .pipe(sass())
        .pipe(autoPrefixer())
        .pipe(cssmin())
        .pipe(gulp.dest('./dist/css'))
})

// 3. 创建一个 js 任务
gulp.task('js', function () {
    return gulp
        .src('./src/js/**')
        .pipe(babel({
            presets: ['es2015']
        }))
        .pipe(uglify())
        .pipe(gulp.dest('./dist/js'))
})

// 4. 创建一个 html 任务
gulp.task('html', function () {
    return gulp
        .src('./src/pages/**')
        .pipe(htmlmin({
            removeEmptyAttibutes: true, // 移出所有空属性
            collapseWhitespace: true // 压缩 html
        }))
        .pipe(gulp.dest('./dist/pages'))
})

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

// 6. 创建一个 static 任务
gulp.task('static', function () {
    return gulp
        .src('./src/static/**')
        .pipe(gulp.dest('./dist/static'))
})
# 执行 lib 任务
$ gulp lib
​
# 执行 static 任务
$gulp static

批量执行任务

// 我是 gulpfile.js 文件

// 1. 引入 gulp
const gulp = require('gulp')

// 2-1. 引入 gulp-cssmin
const cssmin = require('gulp-cssmin')

// 2-2. 引入 gulp-autoprefixer 
const autoPrefixer = require('gulp-autoprefixer')

// 2-3. 引入 gulp-sass
const sass = require('gulp-sass')

// 3-1. 引入 gulp-uglify
const uglify = require('gulp-urlify')

// 3-2. 引入 gulp-babel
//      es6 转 es5 虽然需要下载三个依赖,但是只需要引入一个 gulp-babel 就可以了
const babel = require('gulp-babel')

// 4. 引入 gulp-htmlmin
const htmlmin = require('gulp-htmlmin')


// 2-1. 创建一个 css 的任务
gulp.task('css', function () {
    return gulp
        .src('./src/css/**')   
        .pipe(autoPrefixer({
            browsers: ['last 2 versions']
        }))
        .pipe(cssmin())       
        .pipe(gulp.dest('./dist/css'))  
})

// 2-2. 创建一个 sass 任务
gulp.task('sass', function () {
    return gulp
        .src('./src/sass/**')
        .pipe(sass())
        .pipe(autoPrefixer())
        .pipe(cssmin())
        .pipe(gulp.dest('./dist/css'))
})

// 3. 创建一个 js 任务
gulp.task('js', function () {
    return gulp
        .src('./src/js/**')
        .pipe(babel({
            presets: ['es2015']
        }))
        .pipe(uglify())
        .pipe(gulp.dest('./dist/js'))
})

// 4. 创建一个 html 任务
gulp.task('html', function () {
    return gulp
        .src('./src/pages/**')
        .pipe(htmlmin({
            removeEmptyAttibutes: true, // 移出所有空属性
            collapseWhitespace: true // 压缩 html
        }))
        .pipe(gulp.dest('./dist/pages'))
})

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

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

// 7. 配置一个默认任务
gulp.task('default', ['css', 'sass', 'js', 'html', 'lib', 'static'])
# 运行 gulp,会默认执行 default 任务
$ gulp

清除 DIST 文件夹

// 我是 gulpfile.js 文件

// 1. 引入 gulp
const gulp = require('gulp')

// 2-1. 引入 gulp-cssmin
const cssmin = require('gulp-cssmin')

// 2-2. 引入 gulp-autoprefixer 
const autoPrefixer = require('gulp-autoprefixer')

// 2-3. 引入 gulp-sass
const sass = require('gulp-sass')

// 3-1. 引入 gulp-uglify
const uglify = require('gulp-urlify')

// 3-2. 引入 gulp-babel
//      es6 转 es5 虽然需要下载三个依赖,但是只需要引入一个 gulp-babel 就可以了
const babel = require('gulp-babel')

// 4. 引入 gulp-htmlmin
const htmlmin = require('gulp-htmlmin')

// 5. 引入 gulp-clean
const clean = require('gulp-clean')


// 2-1. 创建一个 css 的任务
gulp.task('css', function () {
    return gulp
        .src('./src/css/**')   
        .pipe(autoPrefixer({
            browsers: ['last 2 versions']
        }))
        .pipe(cssmin())       
        .pipe(gulp.dest('./dist/css'))  
})

// 2-2. 创建一个 sass 任务
gulp.task('sass', function () {
    return gulp
        .src('./src/sass/**')
        .pipe(sass())
        .pipe(autoPrefixer())
        .pipe(cssmin())
        .pipe(gulp.dest('./dist/css'))
})

// 3. 创建一个 js 任务
gulp.task('js', function () {
    return gulp
        .src('./src/js/**')
        .pipe(babel({
            presets: ['es2015']
        }))
        .pipe(uglify())
        .pipe(gulp.dest('./dist/js'))
})

// 4. 创建一个 html 任务
gulp.task('html', function () {
    return gulp
        .src('./src/pages/**')
        .pipe(htmlmin({
            removeEmptyAttibutes: true, // 移出所有空属性
            collapseWhitespace: true // 压缩 html
        }))
        .pipe(gulp.dest('./dist/pages'))
})

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

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

// 8. 创建一个 clean 任务
gulp.task('clean', function () {
    return gulp
        .src('./dist')
        .pipe(clean())
})

// 7. 配置一个默认任务
gulp.task('default', ['css', 'sass', 'js', 'html', 'lib', 'static'])
# 执行 clean 任务
$ gulp clean
​
# 执行 default 任务
$ gulp

按顺序执行任务

// 我是 gulpfile.js 文件

// 1. 引入 gulp
const gulp = require('gulp')

// 2-1. 引入 gulp-cssmin
const cssmin = require('gulp-cssmin')

// 2-2. 引入 gulp-autoprefixer 
const autoPrefixer = require('gulp-autoprefixer')

// 2-3. 引入 gulp-sass
const sass = require('gulp-sass')

// 3-1. 引入 gulp-uglify
const uglify = require('gulp-urlify')

// 3-2. 引入 gulp-babel
//      es6 转 es5 虽然需要下载三个依赖,但是只需要引入一个 gulp-babel 就可以了
const babel = require('gulp-babel')

// 4. 引入 gulp-htmlmin
const htmlmin = require('gulp-htmlmin')

// 5. 引入 gulp-clean
const clean = require('gulp-clean')

// 6. 引入 run-sequence
const runSequence = require('run-sequence')


// 2-1. 创建一个 css 的任务
gulp.task('css', function () {
    return gulp
        .src('./src/css/**')   
        .pipe(autoPrefixer({
            browsers: ['last 2 versions']
        }))
        .pipe(cssmin())       
        .pipe(gulp.dest('./dist/css'))  
})

// 2-2. 创建一个 sass 任务
gulp.task('sass', function () {
    return gulp
        .src('./src/sass/**')
        .pipe(sass())
        .pipe(autoPrefixer())
        .pipe(cssmin())
        .pipe(gulp.dest('./dist/css'))
})

// 3. 创建一个 js 任务
gulp.task('js', function () {
    return gulp
        .src('./src/js/**')
        .pipe(babel({
            presets: ['es2015']
        }))
        .pipe(uglify())
        .pipe(gulp.dest('./dist/js'))
})

// 4. 创建一个 html 任务
gulp.task('html', function () {
    return gulp
        .src('./src/pages/**')
        .pipe(htmlmin({
            removeEmptyAttibutes: true, // 移出所有空属性
            collapseWhitespace: true // 压缩 html
        }))
        .pipe(gulp.dest('./dist/pages'))
})

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

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

// 8. 创建一个 clean 任务
gulp.task('clean', function () {
    return gulp
        .src('./dist')
        .pipe(clean())
})

// 7. 改写 default 任务
gulp.task('default', function () {
    // 里面的每一个参数都可以是一个任务或者一个任务队列
    // 再执行任务的时候,会把前一个任务队列完成的情况下再执行下一个任务队列
    runSequence('clean', ['css', 'sass', 'js', 'html', 'lib', 'static'])
})
# 运行 gulp
$ gulp

自动打开浏览器

// 我是 gulpfile.js 文件

// 1. 引入 gulp
const gulp = require('gulp')

// 2-1. 引入 gulp-cssmin
const cssmin = require('gulp-cssmin')

// 2-2. 引入 gulp-autoprefixer 
const autoPrefixer = require('gulp-autoprefixer')

// 2-3. 引入 gulp-sass
const sass = require('gulp-sass')

// 3-1. 引入 gulp-uglify
const uglify = require('gulp-urlify')

// 3-2. 引入 gulp-babel
//      es6 转 es5 虽然需要下载三个依赖,但是只需要引入一个 gulp-babel 就可以了
const babel = require('gulp-babel')

// 4. 引入 gulp-htmlmin
const htmlmin = require('gulp-htmlmin')

// 5. 引入 gulp-clean
const clean = require('gulp-clean')

// 6. 引入 run-sequence
const runSequence = require('run-sequence')

// 7. 引入 gulp-webserver
const webserver = require('gulp-webserver')


// 2-1. 创建一个 css 的任务
gulp.task('css', function () {
    return gulp
        .src('./src/css/**')   
        .pipe(autoPrefixer({
            browsers: ['last 2 versions']
        }))
        .pipe(cssmin())       
        .pipe(gulp.dest('./dist/css'))  
})

// 2-2. 创建一个 sass 任务
gulp.task('sass', function () {
    return gulp
        .src('./src/sass/**')
        .pipe(sass())
        .pipe(autoPrefixer())
        .pipe(cssmin())
        .pipe(gulp.dest('./dist/css'))
})

// 3. 创建一个 js 任务
gulp.task('js', function () {
    return gulp
        .src('./src/js/**')
        .pipe(babel({
            presets: ['es2015']
        }))
        .pipe(uglify())
        .pipe(gulp.dest('./dist/js'))
})

// 4. 创建一个 html 任务
gulp.task('html', function () {
    return gulp
        .src('./src/pages/**')
        .pipe(htmlmin({
            removeEmptyAttibutes: true, // 移出所有空属性
            collapseWhitespace: true // 压缩 html
        }))
        .pipe(gulp.dest('./dist/pages'))
})

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

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

// 8. 创建一个 clean 任务
gulp.task('clean', function () {
    return gulp
        .src('./dist')
        .pipe(clean())
})

// 9. 创建一个 webserver 任务
gulp.task('webserver', function () {
    return gulp
        .src('./dist')
        .pipe(webserver({
            host: 'localhost',          // 配置打开浏览器的域名
            port: 3000,                 // 配置打开浏览器的端口号
            livereload: true,           // 自动刷新浏览器
            open: './pages/index.html'  // 默认打开 dist 文件夹下的哪个文件
        }))
})

// 7. 改写 default 任务
gulp.task('default', function () {
    // 里面的每一个参数都可以是一个任务或者一个任务队列
    // 再执行任务的时候,会把前一个任务队列完成的情况下再执行下一个任务队列
    runSequence(
        'clean', 
        ['css', 'sass', 'js', 'html', 'lib', 'static'],
        'webserver')
})

修改内容自动刷新

// 我是 gulpfile.js 文件

// 1. 引入 gulp
const gulp = require('gulp')

// 2-1. 引入 gulp-cssmin
const cssmin = require('gulp-cssmin')

// 2-2. 引入 gulp-autoprefixer 
const autoPrefixer = require('gulp-autoprefixer')

// 2-3. 引入 gulp-sass
const sass = require('gulp-sass')

// 3-1. 引入 gulp-uglify
const uglify = require('gulp-urlify')

// 3-2. 引入 gulp-babel
//      es6 转 es5 虽然需要下载三个依赖,但是只需要引入一个 gulp-babel 就可以了
const babel = require('gulp-babel')

// 4. 引入 gulp-htmlmin
const htmlmin = require('gulp-htmlmin')

// 5. 引入 gulp-clean
const clean = require('gulp-clean')

// 6. 引入 run-sequence
const runSequence = require('run-sequence')

// 7. 引入 gulp-webserver
const webserver = require('gulp-webserver')


// 2-1. 创建一个 css 的任务
gulp.task('css', function () {
    return gulp
        .src('./src/css/**')   
        .pipe(autoPrefixer({
            browsers: ['last 2 versions']
        }))
        .pipe(cssmin())       
        .pipe(gulp.dest('./dist/css'))  
})

// 2-2. 创建一个 sass 任务
gulp.task('sass', function () {
    return gulp
        .src('./src/sass/**')
        .pipe(sass())
        .pipe(autoPrefixer())
        .pipe(cssmin())
        .pipe(gulp.dest('./dist/css'))
})

// 3. 创建一个 js 任务
gulp.task('js', function () {
    return gulp
        .src('./src/js/**')
        .pipe(babel({
            presets: ['es2015']
        }))
        .pipe(uglify())
        .pipe(gulp.dest('./dist/js'))
})

// 4. 创建一个 html 任务
gulp.task('html', function () {
    return gulp
        .src('./src/pages/**')
        .pipe(htmlmin({
            removeEmptyAttibutes: true, // 移出所有空属性
            collapseWhitespace: true // 压缩 html
        }))
        .pipe(gulp.dest('./dist/pages'))
})

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

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

// 8. 创建一个 clean 任务
gulp.task('clean', function () {
    return gulp
        .src('./dist')
        .pipe(clean())
})

// 9. 创建一个 webserver 任务
gulp.task('webserver', function () {
    return gulp
        .src('./dist')
        .pipe(webserver({
            host: 'localhost',          // 配置打开浏览器的域名
            port: 3000,                 // 配置打开浏览器的端口号
            livereload: true,           // 自动刷新浏览器
            open: './pages/index.html'  // 默认打开 dist 文件加下的哪个文件
        }))
})

// 10. 创建一个 watch 任务
gulp.task('watch', function () {
    gulp.watch('./src/css/**', ['css'])
    gulp.watch('./src/sass/**', ['sass'])
    gulp.watch('./src/js/**', ['js'])
    gulp.watch('./src/pages/**', ['html'])
    gulp.watch('./src/lib/**', ['lib'])
    gulp.watch('./src/static/**', ['static'])
})

// 7. 改写 default 任务
gulp.task('default', function () {
    // 里面的每一个参数都可以是一个任务或者一个任务队列
    // 再执行任务的时候,会把前一个任务队列完成的情况下再执行下一个任务队列
    runSequence(
        'clean', 
        ['css', 'sass', 'js', 'html', 'lib', 'static'],
        ['webserver', 'watch'])
})
# 运行 gulp
$ gulp

使用 GULP 配置代理

gulp.task('webserver', function () {
    return gulp
        .src('./dist')
        .pipe(webserver({
            host: 'localhost',
            port: 3000,
            livereload: true,
            open: './pages/index.html',
            proxies: [ // 配置所有代理
                { // 其中一个代理配置
                    source: '/login', // 使用的关键字 
                    target: 'http://localhost:80/login.php' // 代理的路径
                }
            ]
        }))
})

GULP完整配置文件(简单版)

  1. gulp@3.9.1

  2. gulp-cssmin

  3. gulp-autoprefixer

  4. gulp-sass

  5. gulp-uglify

  6. gulp-babel@7.0.1

  7. babel-core

  8. babel-preset-es2015

  9. gulp-htmlmin

  10. gulp-clean

  11. run-sequence

  12. gulp-webserver

// 我是 gulpfile.js 文件
const gulp = require('gulp')
const cssmin = require('gulp-cssmin')
const autoPrefixer = require('gulp-autoprefixer')
const sass = require('gulp-sass')
const uglify = require('gulp-urlify')
const babel = require('gulp-babel')
const htmlmin = require('gulp-htmlmin')
const clean = require('gulp-clean')
const runSequence = require('run-sequence')
const webserver = require('gulp-webserver')

gulp.task('css', function () {
    return gulp
        .src('./src/css/**')   
        .pipe(autoPrefixer({
            browsers: ['last 2 versions']
        }))
        .pipe(cssmin())       
        .pipe(gulp.dest('./dist/css'))  
})

gulp.task('sass', function () {
    return gulp
        .src('./src/sass/**')
        .pipe(sass())
        .pipe(autoPrefixer())
        .pipe(cssmin())
        .pipe(gulp.dest('./dist/css'))
})

gulp.task('js', function () {
    return gulp
        .src('./src/js/**')
        .pipe(babel({
            presets: ['es2015']
        }))
        .pipe(uglify())
        .pipe(gulp.dest('./dist/js'))
})

gulp.task('html', function () {
    return gulp
        .src('./src/pages/**')
        .pipe(htmlmin({
            removeEmptyAttibutes: true,
            collapseWhitespace: true
        }))
        .pipe(gulp.dest('./dist/pages'))
})

gulp.task('lib', function () {
    return gulp
        .src('./src/lib/**')
        .pipe(gulp.dest('./dist/lib'))
})

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

gulp.task('clean', function () {
    return gulp
        .src('./dist')
        .pipe(clean())
})

gulp.task('webserver', function () {
    return gulp
        .src('./dist')
        .pipe(webserver({
            host: 'localhost',          
            port: 3000,                 
            livereload: true,           
            open: './pages/index.html',
            proxies: [
                {
                    source: '/login',
                    target: 'http://localhost:80/login.php'
                }
            ]
        }))
})

gulp.task('watch', function () {
    gulp.watch('./src/css/**', ['css'])
    gulp.watch('./src/sass/**', ['sass'])
    gulp.watch('./src/js/**', ['js'])
    gulp.watch('./src/pages/**', ['html'])
    gulp.watch('./src/lib/**', ['lib'])
    gulp.watch('./src/static/**', ['static'])
})

gulp.task('default', function () {
    runSequence(
        'clean', 
        ['css', 'sass', 'js', 'html', 'lib', 'static'],
        ['webserver', 'watch'])
})

上一篇 下一篇

猜你喜欢

热点阅读