一、构建gulp环境
1、下载nodejs
gulp基于node.js,要通过nodejs的npm安装gulp,所以要先安装node.js环境。(英文官网/中文官网链接)。
通过cmd命令窗口确定安装node.js。(在命令窗口输入node -v或npm -v 查看是否返回出版本号)。
2、全局安装gulp(全局环境)
确定正确安装了nodejs环境,然后通过命令全局方式安装gulp:
npm install gulp -g 或者 cnpm install gulp -g
二、项目流程
1)、方法一
1、生成项目所需信息文件package.json(项目目录为:F:gulpproject)
cmd窗口进入gulp(不能有大写字母)目录,输入命令 npm init(初始化文件夹),然后一直按enter键至自动生成package.json文件。
2.项目根目录(gulpproject)下安装gulp(项目环境)
全局安装gulp后,还需要在gulppreject根目录下在单独安装一次(每个使用gulp的项目中都需单独安装一次)。
npm install gulp --save-dev
3、安装所需要的自动化插件
- 压缩js插件是 gulp-uglify
- 压缩image插件是 gulp-image
- 压缩css插件是 gulp-cssnano
- 合并 gulp-concat
- 压缩html插件是 gulp-htmlmin
如gulp-uplify安装
npm install gulp-uplify --save-dev
4、配置gulpfile.js
gulpfile.js是gulppreject(gulp项目)项目的配置文件。
如果F:gulpproject有一个项目compress文件夹,包含要压缩、合并的css,js,image文件,那么就将gulpfile.js放入compress文件夹中。
gulpfile.js配置文件:
src里放的是文件路径,多个文件用“ , ”隔开
var gulp = require('gulp'), uglify = require('gulp-uglify'), concat = require('gulp-concat'), htmlmin = require('gulp-htmlmin'), rename = require('gulp-rename'), cssnano = require('gulp-cssnano'), image = require("gulp-image"), del = require('del'), less = require('gulp-less'); //压缩css,压缩后的文件放入dest/css gulp.task('minifycss', function() { return gulp.src('css/*.css') .pipe(cssnano()) //压缩 .pipe(gulp.dest('dest/css')); //输出 }); //合并并压缩css,合并压缩后的文件放入dest/css gulp.task('concatminifycss', function() { return gulp.src('css/*.css') .pipe(concat('main.css')) //合并所有css到main.css .pipe(gulp.dest('dest/css')) //输出main.css到文件夹 .pipe(rename({ suffix: '.min' })) //rename压缩后的文件名 .pipe(cssnano()) //压缩 .pipe(gulp.dest('dest/css')); //输出 }); gulp.task("htmlmin",function(){ var options = { removeComments: true,//清除HTML注释 collapseWhitespace: true,//压缩HTML collapseBooleanAttributes: true,//省略布尔属性的值 <input checked="true"/> ==> <input checked/> removeEmptyAttributes: true,//删除所有空格作属性值 <input id="" /> ==> <input /> removeScriptTypeAttributes: true,//删除<script>的type="text/javascript" removeStyleLinkTypeAttributes: true,//删除<style>和<link>的type="text/css" minifyJS: true,//压缩页面JS minifyCSS: true//压缩页面CSS }; return gulp.src('*.html') .pipe(htmlmin(options)) .pipe(gulp.dest('dest/')); }); //压缩js,压缩后的文件放入dest/js gulp.task('minifyjs', function() { return gulp.src('js/*.js') .pipe(uglify()) //压缩 .pipe(gulp.dest('dest/js')); //输出 }); //合并并压缩js,合并压缩后的文件放入dest/js gulp.task('concatminifyjs', function() { return gulp.src('js/*.js') .pipe(concat('main.js')) //合并所有js到main.js .pipe(gulp.dest('dest/js')) //输出main.js到文件夹 .pipe(rename({ suffix: '.min' })) //rename压缩后的文件名 .pipe(uglify()) //压缩 .pipe(gulp.dest('dest/js')); //输出 }); //压缩图片,压缩后的文件放入dest/images gulp.task('image', function() { gulp.src('img/*.+(jpg|png|gif|svg)') .pipe(image()) //压缩 .pipe(gulp.dest('dest/images')); //输出 }); //执行压缩前,先删除dest文件夹里的内容 gulp.task('clean', function(cb) { del(['dest/*'], cb) }); //编译less到css gulp.task("less", function() { gulp.src('css/*.less') .pipe(less()) .pipe(gulp.dest("dest/css")); }); //监视文件的变化 gulp.task("watch", function() { gulp.watch("css/*.less", ['less']); }); //默认命令,在cmd中输入gulp后,执行的就是这个命令 gulp.task('default', function() { // 将你的默认的任务代码放在这 gulp.start('clean', 'concatminifycss', 'image', 'concatminifyjs', 'htmlmin'); });
5、执行压缩命令
要执行gulp任务,只需切换到存放gulpfile.js
文件的目录(windows平台使用cmd),然后在命令行中执行gulp
命令就行了。如果gulp
后面加上要执行的任务名,例如gulp clean
,将执行clean任务。如果没有指定任务名,则会执行任务名为default
的默认任务。
2)、方法二
方法一是每次使用 gulp 构建都需要将项目放到 gulp 目录下,那可不可以不放入 gulp 目录下,直接在当前目录里执行 gulp 呢?
首先将自动化插件安装在全局环境中。即:
如gulp-uplify安装 npm install gulp-uplify -g
然后在项目中配置gulpfile.js 文件。
注意此时,在命令行中执行gulp可能报错。原因如:
Ps:项目目录也不能有大写字母。