gulp初步理解与配置

2016-04-12 18:44:25
昨天突然发现gulp太强大了, 折腾了一下。 找了一些教程, 下面是我的粗苯理解。如有错误, 请见谅。 gulp是依赖nodejs的, 所以
 
1. 首先得先去下载nodejs, 安装,打开command prompt 安装glup   (npm install gulp --save-dev);  node -v 检查node是否安装成功
 
node -v查看安装的nodejs版本,出现版本号,说明刚刚已正确安装nodejs。PS:未能出现版本号,请尝试注销电脑重试;
npm -v查看npm的版本号,npm是在安装nodejs时一同安装的nodejs包管理器,那它有什么用呢?稍后解释;
cd定位到目录,用法:cd + 路径 ;
dir列出文件列表;
cls清空命令提示符窗口内容
 
2. 打开到相应的目录 D:\wamp\www\new 使用dir检测是否到了相应的目录
 
 
3、使用npm安装插件:命令提示符执行npm install  [-g] [--save-dev];
3.1、:node插件名称。例:npm install gulp-less --save-dev
3.2、-g:全局安装。将会安装在C:\Users\Administrator\AppData\Roaming\npm,并且写入系统环境变量;  非全局安装:将会安装在当前定位目录;  全局安装可以通过命令行在任何地方调用它,本地安装将安装在定位目录的node_modules文件夹下,通过require()调用;
3.2.3、--save:将保存配置信息至package.json(package.json是nodejs项目配置文件);
3.2.4、-dev:保存至package.json的devDependencies节点,不指定-dev将保存至dependencies节点;
3.2.5、为什么要保存至package.json?因为node插件包相对来说非常庞大,所以不加入版本管理,将配置信息写入package.json并将其加入版本管理,其他开发者对应下载即可(命令提示符执行npm install,则会根据package.json下载所有需要的包)。
3.3、使用npm卸载插件:npm uninstall  [-g] [--save-dev]  PS:不要直接删除本地插件包
3.4、使用npm更新插件:npm update  [-g] [--save-dev]
3.5、查看npm帮助:npm help
3.6、当前目录已安装插件:npm list
 
4、选装cnpm
4.1、说明:因为npm安装插件是从国外服务器下载,受网络影响大,可能出现异常,如果npm的服务器在中国就好了,所以我们乐于分享的淘宝团队干了这事。32个!来自官网:“这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。”;
4.2、官方网址:http://npm.taobao.org
4.3、安装:命令提示符执行npm install cnpm -g --registry=https://registry.npm.taobao.org;  注意:安装完后最好查看其版本号cnpm -v或关闭命令提示符重写打开,安装完直接使用有可能会出现错误;
注:cnpm跟npm用法完全一致,只是在执行命令时将npm改为cnpm(以下操作将以cnpm代替npm)
 
 
 
4、全局安装gulp
4.1、说明:全局安装gulp目的是为了通过她执行gulp任务;
4.2、安装:命令提示符执行cnpm install gulp -g;
4.3、查看是否正确安装:命令提示符执行gulp -v,出现版本号即为正确安装
 
 
5. cnpm init新建文件package.json配置项目信息
 
6.本地安装gulp插件
6.1、安装:定位目录(cd D:\wamp\www\new)命令后提示符执行cnpm install --save-dev;
6.2、本示例以gulp-less为例(编译less文件),命令提示符执行cnpm install gulp-less --save-dev
将会安装在node_modules的gulp-less目录下,该目录下有一个gulp-less的使用帮助文档README.md;
 
7. 然后新建一个gulpfile.js文件存在即将使用的项目的根目录下面。  下面是我的一些初步理解与一些基本的安装包介绍 
 
// $ npm install gulp-ruby-sass gulp-autoprefixer gulp-minify-css gulp-jshint gulp-concat gulp-uglify gulp-imagemin gulp-notify gulp-rename gulp-livereload gulp-cache del --save-dev
 
// .pipe() 导向
//gulp.dest() 目标牡蛎
//gulp.src() 源文件目录
 
 
//设置一个初始化src目录,存放源文件(包含images, styles, scripts)
 
//1 css 编译
//导入工具包 require('node_modules里对应模块')
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'),
    rename = require('gulp-rename'),
    concat = require('gulp-concat'),
    notify = require('gulp-notify'),
    cache = require('gulp-cache'),
    livereload = require('gulp-livereload'),
    del = require('del');
 
//定义一个testLess任务(自定义任务名称)
gulp.task('testSass', function () {
return gulp.src('css/sass/gulp.scss') //该任务针对的文件
//return gulp.src('css/sass/gulp.scss, index.scss') //该任务针对的文件 加载两个文件
//return gulp.src('css/**/*.scss, index.scss') //加载多个文件
 
        .pipe(sass({style:'expend'})) //该任务调用的模块
.pipe(autoprefixer('last 2 version', 'safari 5', 'ie 8', 'ie 9', 'opera 12.1', 'ios 6', 'android 4'));
        .pipe(gulp.dest('css/css')); //将会在src/css下生成index.css
.pipe(rename({suffix: '.min'})) 
.pipe(minifycss()) //压缩成min
.pipe(gulp.dest('css/cssmin')) //生成的min文件
.pipe(notify({ message: 'Styles task complete' }));
});
 
gulp.task('default',['testSass', 'elseTask']); //定义默认任务
 
//gulp.task(name[, deps], fn) 定义任务  name:任务名称 deps:依赖任务名称 fn:回调函数
//gulp.src(globs[, options]) 执行任务处理的文件  globs:处理的文件路径(字符串或者字符串数组) 
//gulp.dest(path[, options]) 处理完后文件生成路径
 
 
// js代码校验、合并和压缩
gulp.task('scripts', function() {
  return gulp.src('src/js/**/*.js')
    .pipe(jshint('.jshintrc'))
    .pipe(jshint.reporter('default'))
    .pipe(concat('main.js'))
    .pipe(gulp.dest('dist/assets/js'))
    .pipe(rename({suffix: '.min'}))
    .pipe(uglify())
    .pipe(gulp.dest('dist/assets/js'))
    .pipe(notify({ message: 'Scripts task complete' }));
});
 
 
//图片压缩
gulp.task('images', function() {
  return gulp.src('src/img/**/*')
.pipe(imagemin({ optimizationLevel: 3, progressive: true, interlaced: true })) //对所有图片进行压缩  
.pipe(cache(imagemin({ optimizationLevel: 5, progressive: true, interlaced: true }))) //新建或者修改过的图片才进行压缩
.pipe(gulp.dest('dist/assets/img'))
.pipe(notify({ message: 'Images task complete' }));
});
 
//清除文件--在任务执行前,最好先清除之前生成的文件:
gulp.task('clean', function(cb) {
    del(['dist/assets/css', 'dist/assets/js', 'dist/assets/img'], cb)
});
 
//设置默认任务(default)
gulp.task('default', ['clean'], function() {
    gulp.start('styles', 'scripts', 'images');
});
 
//监听文件
 
gulp.task('watch', function() {
  // Watch .scss files
  gulp.watch('src/styles/**/*.scss', ['styles']);
  // Watch .js files
  gulp.watch('src/scripts/**/*.js', ['scripts']);
  // Watch image files
  gulp.watch('src/images/**/*', ['images']);
});
 
 
//实现自动刷新页面 修改watch 任务
gulp.task('watch', function() {
  // Create LiveReload server
  livereload.listen();
  // Watch any files in dist/, reload on change
  gulp.watch(['dist/**']).on('change', livereload.changed);
});
 
参考链接
http://markpop.github.io/2014/09/17/Gulp%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B/

关于

联系方式 :

mail: hey_cool@163.com ,
QQ:583459700

备案许可证编号:蜀ICP备16005545号-1 © COPYRIGHT 2015-2024 zhmzjl.com | by: KAPO