gulp入门与一些基本设置

这里是gulp入门的一些操作,实现了编译sass文件、压缩、合并、添加版本号等基本功能。

友情提示,如果npm出现无法下载可以安装 cnpm。在安装完Nodejs 后 

  1. npm install cnpm -g --registry=https://registry.npm.taobao.org  

完成后可

  1. cnpm -v  

查看安装结果

1.安装Nodejs

选择合适的版本下载Nodejs

2.安装全局gulp

  1. npm install --global gulp-cli  

 

3.进入项目目录(之后的操作全是在此目录下进行)

  1. cd desktop/myprogram  

 

4.初始化package.json

  1. npm init  

 

5.安装项目gulp

 

  1. npm install --save-dev gulp  

 

6.安装插件

  1. npm install gulp-htmlmin gulp-imagemin imagemin-pngcrush gulp-jshint jshint  gulp-uglify gulp-notify gulp-useref gulp-load-plugins  gulp-clean-css gulp-sass  gulp-if gulp-users gulp-rev gulp-rev-collector  —save-dev  


7.新建gulpfile.js

[javascript] view plain copy 在CODE上查看代码片派生到我的代码片
  1. var gulp = require('gulp');  
  2.     gulp.task('default', function() {  
  3.         // place code for your default task here  
  4.     });  


8.测试

在终端输入命令

  1. gulp  


9.附上index.html(压缩css、js部分) 、package.json 和 gulpfile.js

index.html

  1. <link rel="shortcut icon" href="images/favicon.ico">  
  2. <!-- build:css lib/main.css -->  
  3. <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">  
  4. <link rel="stylesheet" type="text/css" href="css/main.css">  
  5. <link rel="stylesheet" type="text/css" href="css/common.css">  
  6. <!-- endbuild -->  
  7.   
  8. <!-- build:js lib/main.js -->  
  9. <script type="text/javascript" src="js/jquery.min.js"></script>  
  10. <script type="text/javascript" src="js/bootstrap.min.js"></script>  
  11. <script type="text/javascript" src="js/route.js"></script>  
  12. <script type="text/javascript" src="js/main.js"></script>  
  13. <!-- endbuild -->  


package.json

[javascript] view plain copy 在CODE上查看代码片派生到我的代码片
  1. "devDependencies": {  
  2.     "del": "^2.2.0",  
  3.     "gulp": "^3.9.1",  
  4.     "gulp-clean-css": "^2.0.8",  
  5.     "gulp-concat": "^2.6.0",  
  6.     "gulp-htmlmin": "^2.0.0",  
  7.     "gulp-if": "^2.0.1",  
  8.     "gulp-imagemin": "^3.0.1",  
  9.     "gulp-jshint": "^2.0.1",  
  10.     "gulp-load-plugins": "^1.2.4",  
  11.     "gulp-notify": "^2.2.0",  
  12.     "gulp-rev": "^7.0.0",  
  13.     "gulp-rev-collector": "^1.0.3",  
  14.     "gulp-sass": "^2.3.1",  
  15.     "gulp-sequence": "^0.4.5",  
  16.     "gulp-uglify": "^1.5.3",  
  17.     "gulp-useref": "^3.1.0",  
  18.     "imagemin-pngcrush": "^5.0.0",  
  19.     "jshint": "^2.9.2"  
  20.   }  


gulpfile.js

[javascript] view plain copy 在CODE上查看代码片派生到我的代码片
  1. 'use strict';  
  2. var gulp = require('gulp'),  
  3.     $ = require("gulp-load-plugins")(),  
  4.     sass = require("gulp-sass"),  
  5.     rev = require("gulp-rev"),  
  6.     del = require('del');  
  7.   
  8. gulp.task('default', function() {  
  9.   gulp.run('styles', 'jshint');  
  10.   gulp.watch('src/styles/*.scss', ['styles']);  
  11. });  
  12.   
  13. gulp.task('build', $.sequence('cpfiles', 'useref', 'cphtml', 'revfile',  
  14.           'revhtml', 'delfiles', 'img','htmlmin'));  
  15.   
  16.   
  17. gulp.task('htmlmin', function() {  
  18.   return gulp.src(['dist/*/*.html', 'dist/*.html'])  
  19.     .pipe($.htmlmin({collapseWhitespace: true}))  
  20.     .pipe(gulp.dest('dist/'))  
  21.     .pipe($.notify({ message: 'htmlmin task done' }));  
  22. });  
  23.   
  24. gulp.task('delfiles', function(){  
  25.   del([  
  26.     'dist/js',  
  27.     'dist/css',  
  28.     'dist/styles',  
  29.     'dist/lib/index.html',  
  30.     'dist/lib/rev-manifest.json'  
  31.   ]);  
  32. })  
  33.   
  34. gulp.task('revhtml', function () {  
  35.   return gulp.src(['dist/lib/rev-manifest.json', 'dist/lib/index.html'])  
  36.     .pipe($.revCollector())  
  37.     .pipe(gulp.dest('dist/'))  
  38.     .pipe($.notify({ message: 'revhtml task done' }));  
  39. });  
  40.   
  41. gulp.task('revfile', function(){  
  42.   return gulp.src(['dist/lib/*.css', 'dist/lib/*.js'])  
  43.     .pipe($.rev())  
  44.     .pipe(gulp.dest('dist/lib/'))  
  45.     .pipe(rev.manifest({  
  46.       path: 'rev-manifest.json',  
  47.       merge: true  
  48.     }))  
  49.     .pipe(gulp.dest("dist/lib/"))  
  50.     .pipe($.notify({ message: 'revfile task done' }));  
  51. });  
  52.   
  53. gulp.task('cphtml', function(){  
  54.   return gulp.src('dist/*.html')  
  55.     .pipe(gulp.dest('dist/lib/'))  
  56.     .pipe($.notify({ message: 'copyhtml task done' }));  
  57. })  
  58.   
  59. gulp.task('useref', function() {  
  60.   return gulp.src('dist/*.html')  
  61.     .pipe($.useref())  
  62.     .pipe($.if('*.js', $.uglify()))  
  63.     .pipe($.if('*.css', $.cleanCss({compatibility: 'ie8'})))  
  64.     .pipe(gulp.dest('dist/'))  
  65.     .pipe($.notify({ message: 'useref task done' }));  
  66. });  
  67.   
  68. gulp.task('cpfiles', ['styles'], function(){  
  69.   return gulp.src(['src/*/*','src/*'])  
  70.     .pipe(gulp.dest('dist/'))  
  71.     .pipe($.notify({ message: 'copyfiles task done' }));  
  72. })  
  73.   
  74. gulp.task('img', function() {  
  75.   return gulp.src('dist/images/*.*')  
  76.     .pipe($.imagemin({  
  77.         progressive: true,  
  78.         svgoPlugins: [{removeViewBox: false}],  
  79.         use: [$.imagemin()]  
  80.     }))  
  81.     .pipe(gulp.dest('dist/images/'))  
  82.     .pipe($.notify({ message: 'img task done' }));  
  83. });  
  84.   
  85. gulp.task('styles', function(){  
  86.   return gulp.src('src/styles/*.scss')  
  87.     .pipe(sass().on('error', sass.logError))  
  88.     .pipe(gulp.dest('src/css'))  
  89.     .pipe($.notify({ message: 'sass task done' }));  
  90. })  
  91.   
  92. gulp.task('jshint', function() {  
  93.   return gulp.src(['src/js/main.js','src/js/route.js'])  
  94.     .pipe($.jshint())  
  95.     .pipe($.jshint.reporter('default'))  
  96.     .pipe($.notify({ message: 'jshint task done' }));  
  97. });  
  98.   
  99. gulp.task('clean', function(){  
  100.   del([  
  101.     'dist/'  
  102.     ]);  
  103. })  


文件结构,上层为 desktop/myprogram/

posted @ 2017-02-08 14:33  Lonely,lonelyBurning  阅读(444)  评论(1)    收藏  举报