说明:gulp是基于nodejs,理所固然须要安装nodejs;javascript
安装:打开nodejs官网(https://nodejs.org/en/),点击硕大的绿色Download按钮,它会根据系统信息选择对应版本(windows系统下载.msi文件)。css
测试:按window + r 输入cmd回车,而后输入node -vhtml
而后输入npm -v 前端
若是都能打印出相应版本信息,那么说明你配置成功了java
成功安装显示以下:node
由于npm安装插件是从国外服务器下载,受网络影响大,可能出现异常,若是npm的服务器在中国就行了,因此咱们乐于分享的淘宝团队干了这事。npm
淘宝npm镜像网址:http://npm.taobao.org json
安装:使用命令执行gulp
npm install cnpm -g --registry=https://registry.npm.taobao.org windows
tips:
安装完成以下:
命令 :
(须要项目名称、版本号、描述、入口文件、运行命令、做者、证书 ---- 一路按回车便可)
//获得的 package.json 以下 { "name": "gulp", 项目名称(必须) "version": "1.0.0", 项目版本(必须) "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
命令 : cnpm i gulp@3 -g
全局安装gulp
@3 表明选择了 3 的版本
i 即为 install
-g 即为 --global
测试是否安装成功:gulp -v
命令: cnpm i gulp@3 -D cnpm i gulp@3 -S (两者选择其一便可)
-D 缩写 --save-dev 开发依赖
-S 缩写 --save 项目依赖
开发依赖: 开发过程当中须要使用到的依赖的模块,项目上线时不须要的模块 --- 代码格式校验的模块
项目依赖: 项目上线仍然须要使用的模块
----- 若是不知道怎么选择,那你就写 -S
成功安装以下:
const gulp = require('gulp');
//+++ // 复制index.html 到 dist 目录 gulp.task('copy-index', function () { gulp.src('./index.html') .pipe(gulp.dest('dist')) })
命令行执行了 gulp copy-index 发现多了 dist目录,且目录下有一份同样的index文件
拿到css文件夹下全部文件
gulp.src('./css/**/*')
拷贝css文件夹下的全部文件以及文件夹内的文件
//+++ gulp.task('copy-css', function () { gulp.src('./css/**/*') .pipe(gulp.dest('dist/css')) //全部文件拷贝到dist文件加内 })
指令:gulp copy-css
安装合并模块
指令:cnpm i gulp-concat -S
合并代码以下:
//++++ const concat = require('gulp-concat'); //引入合并模块 gulp.task('copy-css', function () { gulp.src('./css/**/*') // 拿到全部的css // ++++ .pipe(concat('main.css')) // 合并 .pipe(gulp.dest('dist/css')) })
安装压缩模块
指令:cnpm i gulp-minify-css -S
// ++++ const minifyCss = require('gulp-minify-css'); //引入压缩模块 gulp.task('copy-css', function () { gulp.src('./css/**/*') // 拿到全部的css .pipe(concat('main.css')) // 合并 // ++++ .pipe(minifyCss()) // 压缩 .pipe(gulp.dest('dist/css')) })
安装重命名模块
cnpm i gulp-rename -S
重命名
合并代码放到dist/css
压缩css 重命名 再放到dist/css
//+++ const rename = require('gulp-rename'); //引入重命名模块 gulp.task('copy-css', function () { gulp.src('./css/**/*') // 拿到全部的css .pipe(concat('main.css')) // 合并 //+++ .pipe(gulp.dest('dist/css')) .pipe(minifyCss()) // 压缩 //+++ .pipe(rename('main.min.css')) //重命名为main.min.css .pipe(gulp.dest('dist/css')) })
本质也是文件的合并,操做方法一致
gulp.task('copy-js', () => { gulp.src('./js/**/*') .pipe(gulp.dest('dist/js')) })
本质也是文件的复制,操做方法一致
gulp.task('copy-js', () => { gulp.src('./js/**/*') // +++ .pipe(concat('main.js')) .pipe(gulp.dest('dist/js')) })
须要下载压缩js模块
指令: cnpm i gulp-uglify -S
//引用压缩js模块 const uglify = require('gulp-uglify'); gulp.task('copy-js', () => { gulp.src('./js/**/*') .pipe(concat('main.js')) // 合并js // +++ .pipe(uglify()) // 压缩js .pipe(gulp.dest('dist/js')) })
gulp.task('copy-js', () => { gulp.src('./js/**/*') .pipe(concat('main.js')) // 合并js // +++ .pipe(gulp.dest('dist/js')) .pipe(uglify()) // 压缩js // +++ .pipe(rename('main.min.js')) .pipe(gulp.dest('dist/js')) })
//+++ gulp.task('copy-images', () => { gulp.src('./assets/**/*') .pipe(gulp.dest('dist/assets')) })
须要下载压缩图片模块
指令:cnpm i gulp-imagemin -S
//引入压缩图片模块 const imagemin = require('gulp-imagemin'); gulp.task('copy-images', () => { gulp.src('./assets/**/*') // +++ .pipe(imagemin()) // 压缩图片 .pipe(gulp.dest('dist/assets')) })
没有后端接口时,本身的模拟数据
数据的复制 ,与文件的复制同样
// +++ gulp.task('copy-data', () => { gulp.src('./data/**/*') .pipe(gulp.dest('dist/data')) })
任务的名称不要本身随意定义,就写build
// +++ gulp.task('build', ['copy-index', 'copy-css', 'copy-js', 'copy-images', 'copy-data'], () => { console.log('success') })
下载服务器模块
指令:cnpm i gulp-connect -S
tip: server 任务名不能更改
//+++ gulp.task('server', () => { connect.server({ // 说明服务器的根目录 root: 'dist', livereload: true // 实时更新 }) })
任务监听,能够监放任务的改动
// +++ gulp.task('watch', () => { gulp.watch('index.html', ['copy-index']) gulp.watch('css/**/*', ['copy-css']) gulp.watch('js/**/*', ['copy-js']) gulp.watch('assets/**/*', ['copy-images']) gulp.watch('data/**/*', ['copy-data']) })
gulp.task('default', ['server', 'watch'])
gulp
在页面、css、js、图片、数据相关任务最后执行一句话,从新启动服务器
实现更改文件后,页面实时更新
gulp.task('copy-data', () => { gulp.src('./data/**/*') .pipe(gulp.dest('dist/data')) .pipe(connect.reload()) //********************************************* })