gulp + sass + gulpPlugins learning

前言

每安装一个记得查看版本,可看是否安装成功。

安装流程:

node—ruby—gulp—sass—gulp plugins—config gulpfile.js

安装node

到http://nodejs.cn/(中文版^_^)下载并安装;

如此npm也会一并安装了npm常用命令[http://javascript.ruanyifeng.com/nodejs/npm.html]。

command line:

node -v

npm -v

 

安装ruby

下载并安装ruby: http://rubyinstaller.org/downloads  。

如此gem也会一并安装了。

command line:

ruby -v

gem -v

 

安装gulp

首先全局安装gulp;

ruby cammand line: 

npm init 自动初始化package.json文件

npm install -g gulp

然后再到项目中项目安装 gulp;

ruby cammand line: 

npm install (--save-dev) gulp

说明:--save-dev 会自动添加配置在package.json依赖文件中,so最好加上。

--save参数表示将该模块写入dependencies属性,--save-dev表示将该模块写入devDependencies属性。

安装sass

ruby cammand line:

gem install sass

查看版本确认是否安装成功;

command line:

sass -v

ps:  可能会被墙,使用下面方法安装 :

1、到下载 http://www.w3cplus.com/sassguide/install.html  这个文件sass-3.4.22.gem

2、ruby 命令行输入 gem install ,然后把上面的文件拖到命令行,就会自动生成下面的命令:

>gem install C:\Users\Administrator\Desktop\sass-3.4.22.gem\sass-3.

3、这就成功了。

参考: http://www.w3cplus.com/sassguide/install.html

 

安装插件之前可以 :  npm  update 来更新一下。

安装gulp plugins

("gulp-autoprefixer": "^3.1.0",

"gulp-clean-css": "^2.0.6",
"gulp-minify-css": "^1.2.4",
"gulp-sass": "^2.3.1",
"gulp-sourcemaps": "^2.0.0-alpha",
"gulp-uglify": "^1.5.3")

ruby cammand line:

npm install --save-dev gulp-sass

npm pluginsname -v (查看版本)

如下代码为package.json的配置:

 1 {
 2   "name": "mcvideo",
 3   "version": "1.0.0",
 4   "description": "我的世界大神视频集",
 5   "main": "glupfile 0.js",
 6   "dependencies": {},
 7   "devDependencies": {
 8     "browser-sync": "^2.13.0",
 9     "gulp": "^3.9.1",
10     "gulp-autoprefixer": "^3.1.0",
11     "gulp-clean-css": "^2.0.6",
12     "gulp-filter": "^4.0.0",
13     "gulp-livereload": "^3.8.1",
14     "gulp-sass": "^2.3.2",
15     "gulp-sourcemaps": "^2.0.0-alpha",
16     "gulp-uglify": "^1.5.3"
17   },
18   "scripts": {
19     "test": "echo \"Error: no test specified\" && exit 1"
20   },
21   "author": "teaism",
22   "license": "ISC"
23 }

 ps:  推荐建立package.json文件添加上要的插件后 直接在命令行 运行  npm install

 

配置gulpfiles.js

 

  1 var gulp = require('gulp'),
  2     sass = require('gulp-sass'), // 编译scss
  3     cleanCss = require('gulp-clean-css'), // 压缩css
  4     // copydir = require('copy-dir'),//文件拷贝
  5     imagemin = require('gulp-imagemin'),//图片压缩
  6     cache = require('gulp-cache'),//图片压缩缓存
  7     uglify = require('gulp-uglify'),// 压缩js
  8     plumber = require('gulp-plumber'),//检测错误
  9     autoprefixer = require('gulp-autoprefixer'),// 自动添加css前缀
 10     browserSync = require('browser-sync').create(), // 浏览器自动加载不需手动刷新,
 11     reload = browserSync.reload,
 12     gutil = require('gulp-util'),
 13     paths = require('gulp-watch-path'),//“一对一”编译
 14     filter = require('gulp-filter'),
 15     sourcemaps = require('gulp-sourcemaps'); // 资源地图
 16 
 17 // 需要编译的文件base路径
 18 var basepath = 'static/assets/*/*/';
 19 
 20 gulp.task('cleanCash', function (done) {//清除缓存
 21     return cache.clearAll(done);
 22 });
 23 
 24 function errrHandler( e ){
 25     // 控制台发声,错误时beep一下
 26     gutil.beep();
 27     gutil.log(e);
 28     this.emit('end');
 29 }
 30 
 31 // 复制dep目录下的文件
 32 gulp.task('copydir', function() {
 33     gulp.src(['static/assets/dep/**/*.*']).pipe(gulp.dest('dist/static/assets/dep/'));
 34 });
 35 
 36 // sass编译成css后自动添加前缀再压缩css
 37 // gulp.task('sass', function(){ 
 38 //     gulp.src('static/assets/scss/*/*.scss')
 39 //         .pipe(sass())
 40 //         .pipe(gulp.dest('static/assets/css'))
 41 // })
 42 // gulp.task('cssmin', function(){ 
 43 //     gulp.src(basepath + '*.css')
 44 //         .pipe(plumber({errorHandler:errrHandler}))
 45 //         .pipe(sourcemaps.init({loadMaps: true}))
 46 //         .pipe(autoprefixer({
 47 //             browers:['Chrome > 44']
 48 //         }))
 49 //         .pipe(sourcemaps.write('../maps/static'))
 50 //         .pipe(gulp.dest('dist/static/assets/'))
 51 //         .pipe(browserSync.reload({stream: true}));
 52 // })
 53 
 54 
 55 // sass编译成css后自动添加前缀再压缩css
 56 gulp.task('sass', function(){ 
 57     gulp.src('static/assets/scss/*/*.scss')
 58         .pipe(plumber({errorHandler:errrHandler}))
 59         .pipe(sourcemaps.init({loadMaps: true}))
 60         .pipe(sass())
 61         .pipe(autoprefixer({
 62             browers:['Chrome > 44']
 63         }))
 64         .pipe(cleanCss())
 65         // .pipe(cleanCss({debug: false}, function (details) {
 66         //     console.log("error=" + details.errors + " :  path===" + details.path);
 67         // }))
 68         .pipe(sourcemaps.write('.././../maps/static'))
 69         .pipe(gulp.dest('dist/static/assets/css'))
 70         .pipe(browserSync.reload({stream: true}));
 71 })
 72 
 73 
 74 // 压缩js
 75 gulp.task('jsmin', function(){
 76     // gulp.src('static/*/*/*.js')
 77     gulp.src('static/assets/**/*.js')
 78         .pipe(plumber({errorHandler:errrHandler}))
 79         .pipe(sourcemaps.init({loadMaps: true}))
 80             .pipe(uglify())
 81         .pipe(sourcemaps.write('../maps/static'))
 82         .pipe(gulp.dest('dist/static/assets/'));
 83 })
 84 
 85 // 压缩图片
 86 gulp.task('imagesmin', function(){
 87     // gulp.src('static/*/*/*.{png,jpg,gif,ico}')
 88     gulp.src(basepath + '*.{jpg,png,gif,ico}')
 89         .pipe(plumber({errorHandler:errrHandler}))
 90         .pipe(cache(imagemin()))
 91         .pipe(gulp.dest('dist/static/assets'));
 92 })
 93 
 94 // 浏览器自动加载不需手动刷新
 95 gulp.task('watch',['sass', 'jsmin'], function(){
 96     browserSync.init({
 97         proxy: 'http://localhost:8080/toll-static/src/login/platform.html',
 98        ui: {
 99             port: 8080,
100             weinre: {
101                 port: 9090
102             }
103         }
104     });
105     gulp.watch(basepath + '*.scss', ['sass']);
106     gulp.watch(basepath + '*.js', ['jsmin']);
107     gulp.watch('static/assets/dep/**/*.*', ['copydir']);
108     gulp.watch(basepath + '*.{png,jpg,gif,ico}', ['imagesmin']);
109     gulp.watch('src/*/*.html').on('change', reload);
110 })
111 
112 /*
113 监听文件方法二:
114 
115 gulp.task("default", function(){
116     gulp.run('jsmin', 'sass');
117     // 监听文件变化
118     gulp.watch('scss/*.scss', function(){
119         gulp.run('jsmin', 'sass');
120     })
121 })*/
122 gulp.task('default', ['cleanCash', 'sass', 'jsmin', 'copydir',  'imagesmin', 'watch']);

 

 

 

 

congratulation 执行

ruby cammand line:

gulp TASK

 ?gulp -s后者gulp default -s  ?

一些命令:

gulp  -T     查看任务列表

 

// -w: 实时监听
// -s: 启动服务器
// -p: 服务器启动端口,默认8080

 

 

 

 

 

 

 

 参考:

browsersync: http://www.browsersync.cn/

gulp-plugins: http://gulpjs.com/plugins/

 

posted @ 2016-05-03 16:05  Teaism  阅读(585)  评论(0编辑  收藏  举报