gulp(基础篇)

  今天在写项目的时候用到了gulp构建工具,虽然一年前就有用过,但是一直只存在于我的“有道云笔记”里,今天又一次用到,固然是巩固一下,这里来记录一下吧:这里我主要想要记录的就是初学者在第一次使用gulp该如何操作,关于gulp的概念以及相关介绍,我这里就不一一描述了,在以后的文章里我会再补过来......


总的流程:安装nodejs -> 全局安装gulp -> 项目安装gulp以及gulp插件 -> 配置gulpfile.js -> 运行任务

第一步你需要安装nodejs:(gulp是基于nodejs,理所当然需要安装nodejs)

打开nodejs官网,点击硕大的绿色Download按钮,它会根据系统信息选择对应版本(推荐 TLS 版)。然后按步骤正常安装即可(安装路径随意)。

第二步:命令行操作:(以下都是在windows系统下进行的)

简单介绍gulp在使用过程中常用命令,打开命令提示符执行下列命令(打开方式:window + r 输入cmd回车):

node -v  查看安装的nodejs版本,出现版本号,说明刚刚已正确安装nodejs。(PS:未能出现版本号,请尝试注销电脑重试)
npm -v   查看npm的版本号,npm是在安装nodejs时一同安装的nodejs包管理器。
cd       定位到目录,用法:cd + 路径 ;
dir      列出文件列表;
cls      清空命令提示符窗口内容。

在命令行中进行如下图操作,看到相应的数据显示即为安装成功:

第三步:选装cnpm (国内到 npm 服务器的连接很不稳定,如果你有V了个PN大可不必担心,那么你可以忽略这一步)

安装:命令提示符执行 npm install cnpm -g --registry=https://registry.npm.taobao.org

注意:安装完后最好查看其版本号cnpm -v或关闭命令提示符重新打开,安装完直接使用有可能会出现错误;
注:cnpm跟npm用法完全一致,只是在执行命令时将npm改为cnpm(以下操作将以cnpm代替npm)。

第四步:全局安装gulp

 
说明:全局安装gulp目的是为了通过她执行gulp任务;
安装:命令提示符执行 cnpm install gulp -g
查看是否正确安装:命令提示符执行gulp -v,出现版本号即为正确安装。

第五步:新建package.json文件
说明:package.json是基于nodejs项目必不可少的配置文件,它是存放在项目根目录的普通json文件;可以在项目上使用 npm init 配置,推荐直接新建并写入初始内容:(注意:json文件内是不能写注释的,复制下列内容请删除注释)

{
  "name": "wap",        //项目名称(必须)
  "version": "1.0.0",   //项目版本(必须)
  "description": "This is for study gulp project !",   //项目描述(必须)
  "homepage": "",       //项目主页
  "repository": {       //项目资源库
    "type": "git",
    "url": "github.com"
  },
  "author": {           //项目作者信息
    "name": "xiangjun",
    "email": "1289431084@qq.com"
  },
  "license": "ISC",       //项目许可协议
  "devDependencies": {    //项目依赖的插件
    "gulp": "^3.8.11"
  }
}

这里是我建立的目录:

它是这样一个json文件(注意:json文件内是不能写注释的,复制下列内容请删除注释):

{
  "name": "fenhongshop_wap",   //项目名称(必须)
  "version": "1.0.0",          //项目版本(必须)
  "description": "a shopping wap",     //项目描述(必须)
  "author": {        //项目作者信息
    "name": "xiangruding",
    "email": "1289431084@qq.com"
  },
  "license": "ISC",  //项目许可协议
  "devDependencies": {  //项目依赖的插件
    "del": "^2.2.0",
    "gulp": "^3.9.1",
    "gulp-autoprefixer": "^3.1.1",
    "gulp-cache": "^0.4.6",
    "gulp-clean": "^0.3.2",
    "gulp-concat": "^2.6.1",
    "gulp-html-minifier": "^0.1.8",
    "gulp-htmlmin": "^3.0.0",
    "gulp-imagemin": "^2.4.0",
    "gulp-jasmine": "^2.2.1",
    "gulp-jshint": "^2.0.4",
    "gulp-livereload": "^3.8.1",
    "gulp-minify-css": "^1.2.4",
    "gulp-notify": "^2.2.0",
    "gulp-rename": "^1.2.2",
    "gulp-rev": "^7.0.0",
    "gulp-rev-collector": "^1.0.2",
    "gulp-rimraf": "^0.2.0",
    "gulp-ruby-sass": "^2.1.1",
    "gulp-uglify": "^1.5.4",
    "gulp-util": "^3.0.7",
    "imagemin-pngcrush": "^4.1.0",
    "jshint": "^2.9.4"
  }
}

再次提醒:package.json是一个普通json文件,所以不能添加任何注释。

对于完整的 package.json (如上), 只需对整个项目执行 npm install 即可安装 package.json 文件中声明的所有插件模块

第六步:本地安装gulp插件(给项目目录安装 gulp以及gulp插件

给项目目录安装gulp:cnpm install gulp --save-dev

—save-dev 这个参数会将插件信息自动更新到 package.json 里,其中的 devDependencies 属性会随插件依赖的安装卸载而改变。

PS. Windows 7及以上,按住 Shift 再右键,选择在此处打开命令窗口。免去 cd 命令定位目录的繁琐。

-----------------------------------------------------------------------------------------

或者分为如下两个部分执行也是可行的:

1、先执行:定位目录命令提示符执行 cnpm install gulp -g

说明:我们全局安装了gulp,项目也安装了gulp,全局安装gulp是为了执行gulp任务,本地安装gulp则是为了调用gulp插件的功能。

2、后执行:定位目录命令后提示符执行cnpm install --save-dev

=======================================================

3、之后安装gulp插件:举例:gulp-imagemin压缩图片文件(包括PNG、JPEG、GIF和SVG图片)

命令:cnpm install gulp-imagemin --save-dev

如上图,有显示蓝色的√√就说明插件安装成功!  

当然你也可以直接执行如下命令实现全部安装:(这里只是把所有的插件都汇总写在一块了,当然你也可以向上边举例的那样单独安装插件,需要什么插件安装什么插件)

cnpm install gulp del gulp-cached gulp-uglify gulp-rename gulp-concat gulp-notify gulp-filter gulp-jshint gulp-ruby-sass gulp-rev-append gulp-cssnano gulp-replace gulp-imagemin browser-sync gulp-font-spider gulp-file-include gulp-autoprefixer --save-dev

关于其他更多插件配置只需要查看一下这里

以上两个安装操作(给项目目录安装 gulp以及gulp插件)将会在项目目录下生成 node_modules 文件夹,相应的插件都在这里。

(Windows 用户请注意,此文件夹可能 无法删除 无法复制 无法移动,会出现诸如“包含名称过长且无法放入回收站”,“源文件名长度大于文件系统支持的长度。请尝试将其移动到具有较短路径名称的位置” 等等问题。使用一个简单的方式即可删除,使用 WinRAR “添加到压缩文件”,勾选压缩选项里的 “压缩后删除源文件” ,确定之后即可删除。)

第七步:gulpfile.js文件

说明:gulpfile.js是gulp项目的配置文件,是位于项目根目录的普通js文件(其实将gulpfile.js放入其他文件夹下亦可)。

这里是我的目录列表:

它大概是这样一个js文件:

var gulp = require('gulp'),
    sass = require('gulp-ruby-sass'),
    autoprefixer = require('gulp-autoprefixer'),
    minifycss = require('gulp-minify-css'),
    jshint = require('gulp-jshint'),
    uglify = require('gulp-uglify'),
    imagemin = require('gulp-imagemin'),
    pngcrush = require('imagemin-pngcrush'),
    rev = require('gulp-rev'),
    revCollector = require('gulp-rev-collector'),
    htmlmin1 = require('gulp-htmlmin'),
    htmlmin = require('gulp-html-minifier'),
    rename = require('gulp-rename'),
    clean = require('gulp-rimraf'),
    concat = require('gulp-concat'),
    notify = require('gulp-notify'),
    cache = require('gulp-cache'),
    livereload = require('gulp-livereload'),
    jasmine = require('gulp-jasmine'),
    del = require('del'),
    gulpUtil = require('gulp-util');

/********************HTML*************************/
gulp.task('testHtmlmin', function () {
    var options = {
        removeComments: true,
        collapseWhitespace: true,
        collapseBooleanAttributes: true,
        removeEmptyAttributes: true,
        removeScriptTypeAttributes: true,
        removeStyleLinkTypeAttributes: true,
        minifyJS: true,
        minifyCSS: true
    };
    gulp.src('html/*.html')
        .pipe(htmlmin1(options))
        .pipe(gulp.dest('dist/html'))
        .pipe(notify({ message: 'testHtmlmin task complete' }));
});

/********************CSS*************************/
gulp.task('styles', function() {  
return gulp.src('css/*.css')
 .pipe(gulp.dest('dist/css'))
 .pipe(minifycss())
 .pipe(gulp.dest('dist/css'))
 .pipe(notify({ message: 'styles task complete' }));
});
/********************javascript*************************/
gulp.task('scripts', function() {  
return gulp.src('js/*.js')
 // .pipe(jshint('.jshintrc'))
 // .pipe(jshint.reporter('default'))
 .pipe(concat('main.js'))
 .pipe(gulp.dest('dist/js'))
 // .pipe(rename({suffix: '.min'}))
 .pipe(uglify())
 .pipe(gulp.dest('dist/js'))
 .pipe(notify({ message: 'Scripts task complete' }));
})
/********************images*************************/
gulp.task('images', function() {  
return gulp.src('img/*')
 .pipe(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true }))
 .pipe(gulp.dest('dist/img'))
 .pipe(notify({ message: 'Images task complete' }));
});
/********************clean*************************/
gulp.task('clean', function() {  
return gulp.src(['dist/html', 'dist/css', 'dist/js', 'dist/img'], {read: false})
 .pipe(clean());
});
/**************************HTML****************************/
//watch
gulp.task('watch', function() {
    // 看守所有.html档
    gulp.watch('html/*.html', ['testHtmlmin']);

     // 看守所有.css档
     gulp.watch('css/*.css', ['styles']);
     // 看守所有.js档
     gulp.watch('js/*.js', ['scripts']);
     // 看守所有图片档
     gulp.watch('img/*', ['images']);
});

/**
 * 默认执行
 */
gulp.task('default', ['clean'], function() {  
 gulp.start('testHtmlmin','styles', 'scripts', 'images');
});

更多关于gulpfile.js中的函数解释,请参考gulp API 文档

第八步:运行gulp

说明:命令提示符执行gulp 任务名称;
编译:定位到目录执行gulp编译所用任务:(执行gulp default和gulp的作用是一样的,都会调用default任务里的所有任务)

总结
  1、安装nodejs;
  2、新建package.json文件;
  3、全局和本地安装gulp;
  4、安装gulp插件;
  5、新建gulpfile.js文件;
  6、通过命令提示符运行gulp任务。

原文地址:https://www.cnblogs.com/xiangru0921/p/6863322.html