这里是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

  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. <!-- build:js lib/main.js -->
  8. <script type="text/javascript" src="js/jquery.min.js"></script>
  9. <script type="text/javascript" src="js/bootstrap.min.js"></script>
  10. <script type="text/javascript" src="js/route.js"></script>
  11. <script type="text/javascript" src="js/main.js"></script>
  12. <!-- endbuild -->

package.json

  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

  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. gulp.task('default', function() {
  8. gulp.run('styles', 'jshint');
  9. gulp.watch('src/styles/*.scss', ['styles']);
  10. });
  11. gulp.task('build', $.sequence('cpfiles', 'useref', 'cphtml', 'revfile',
  12. 'revhtml', 'delfiles', 'img','htmlmin'));
  13. gulp.task('htmlmin', function() {
  14. return gulp.src(['dist/*/*.html', 'dist/*.html'])
  15. .pipe($.htmlmin({collapseWhitespace: true}))
  16. .pipe(gulp.dest('dist/'))
  17. .pipe($.notify({ message: 'htmlmin task done' }));
  18. });
  19. gulp.task('delfiles', function(){
  20. del([
  21. 'dist/js',
  22. 'dist/css',
  23. 'dist/styles',
  24. 'dist/lib/index.html',
  25. 'dist/lib/rev-manifest.json'
  26. ]);
  27. })
  28. gulp.task('revhtml', function () {
  29. return gulp.src(['dist/lib/rev-manifest.json', 'dist/lib/index.html'])
  30. .pipe($.revCollector())
  31. .pipe(gulp.dest('dist/'))
  32. .pipe($.notify({ message: 'revhtml task done' }));
  33. });
  34. gulp.task('revfile', function(){
  35. return gulp.src(['dist/lib/*.css', 'dist/lib/*.js'])
  36. .pipe($.rev())
  37. .pipe(gulp.dest('dist/lib/'))
  38. .pipe(rev.manifest({
  39. path: 'rev-manifest.json',
  40. merge: true
  41. }))
  42. .pipe(gulp.dest("dist/lib/"))
  43. .pipe($.notify({ message: 'revfile task done' }));
  44. });
  45. gulp.task('cphtml', function(){
  46. return gulp.src('dist/*.html')
  47. .pipe(gulp.dest('dist/lib/'))
  48. .pipe($.notify({ message: 'copyhtml task done' }));
  49. })
  50. gulp.task('useref', function() {
  51. return gulp.src('dist/*.html')
  52. .pipe($.useref())
  53. .pipe($.if('*.js', $.uglify()))
  54. .pipe($.if('*.css', $.cleanCss({compatibility: 'ie8'})))
  55. .pipe(gulp.dest('dist/'))
  56. .pipe($.notify({ message: 'useref task done' }));
  57. });
  58. gulp.task('cpfiles', ['styles'], function(){
  59. return gulp.src(['src/*/*','src/*'])
  60. .pipe(gulp.dest('dist/'))
  61. .pipe($.notify({ message: 'copyfiles task done' }));
  62. })
  63. gulp.task('img', function() {
  64. return gulp.src('dist/images/*.*')
  65. .pipe($.imagemin({
  66. progressive: true,
  67. svgoPlugins: [{removeViewBox: false}],
  68. use: [$.imagemin()]
  69. }))
  70. .pipe(gulp.dest('dist/images/'))
  71. .pipe($.notify({ message: 'img task done' }));
  72. });
  73. gulp.task('styles', function(){
  74. return gulp.src('src/styles/*.scss')
  75. .pipe(sass().on('error', sass.logError))
  76. .pipe(gulp.dest('src/css'))
  77. .pipe($.notify({ message: 'sass task done' }));
  78. })
  79. gulp.task('jshint', function() {
  80. return gulp.src(['src/js/main.js','src/js/route.js'])
  81. .pipe($.jshint())
  82. .pipe($.jshint.reporter('default'))
  83. .pipe($.notify({ message: 'jshint task done' }));
  84. });
  85. gulp.task('clean', function(){
  86. del([
  87. 'dist/'
  88. ]);
  89. })

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

gulp入门与一些基本设置的更多相关文章

  1. Gulp入门教程(转载)

    本人转载自: Gulp入门教程

  2. (转)前端构建工具gulp入门教程

    前端构建工具gulp入门教程 老婆婆 1.8k 2013年12月30日 发布 推荐 10 推荐 收藏 83 收藏,20k 浏览 本文假设你之前没有用过任何任务脚本(task runner)和命令行工具 ...

  3. 《Gulp 入门指南》 : 使用 gulp 压缩 JS

    <Gulp 入门指南> : 使用 gulp 压缩 JS 请务必理解如下章节后阅读此章节: 安装 Node 和 gulp 访问论坛获取帮助 压缩 js 代码可降低 js 文件大小,提高页面打 ...

  4. Gulp入门与解惑

    Gulp简介 Gulp.js 是一个自动化构建工具,开发者可以使用它在项目开发过程中自动执行常见任务.Gulp.js是基于 Node.js构建的,利用Node.js流的威力,你可以快速构建项目. 安装 ...

  5. gulp 入门使用

      gulp 入门使用 使用场景 相信大家在传统的开发模式下 都是 html + css + js 然后静态文件不经过任何处理 部署到服务器,这样会有很多漏洞例如: 1.在网站上查看F12 就可以看到 ...

  6. 【转】Gulp入门基础教程

    Gulp入门基础教程 原文在此 前言最近流行前端构建工具,苦于之前使用Grunt,代码很难阅读,现在出了Gulp, 真是摆脱了痛苦.发现了一篇很好的Gulp英文教程,整理翻译给大家看看. 为什么使用G ...

  7. gulp入门演练

    一直想学习下gulp看了蛮多资料,然后总是感觉是是而非,突然开窍了,把自己学会的过程给大家分享下,入门超级简单的 gulp安装 安装gulp 如果参数-g 表示全局安装 $ npm install g ...

  8. 前端小白的gulp入门

    gulp新手入门 全局安装 cnpm install -g gulp 本地安装cnpm install gulp -D 如果项目没有package.json,记得npm init 安装插件cnpm i ...

  9. gulp入门学习教程(入门学习记录)

    前言 最近在通过教学视频学习angularjs,其中有gulp的教学部分,对其的介绍为可以对文件进行合并,压缩,格式化,监听,测试,检查等操作时,看到前三种功能我的心理思想是,网上有很多在线压缩,在线 ...

随机推荐

  1. TCP协议为什么会采用三次握手,若采用二次握手可以吗?

     TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的.可靠的.基于IP的传输层协议,采用三次握手确认建立一个连接. TCP为了保证报文传输的 ...

  2. http 请求报文和响应报文

    1.请求报文 示例: 2.响应报文 示例:

  3. table设置表格有滚动条

    table 设置表格有滚动条. 少说多做,代码中有注释: <!DOCTYPE HTML> <html> <head> <meta http-equiv=&qu ...

  4. 【svn】Centos搭建svn服务器环境

    1.需求描述 在Centos系统中搭建svn服务器环境 2.搭建过程 2.1 yum安装svn [root@localhost /]# yum install svn  2.2 新建目录存储svn目录 ...

  5. ASP.NET 对字符串大小写切换

    来源:http://www.codeproject.com/Tips/297011/How-to-Toggle-String-Case-in-NET#alternative22 使用LINQ: pub ...

  6. 【LeetCode】166. Fraction to Recurring Decimal

    Fraction to Recurring Decimal Given two integers representing the numerator and denominator of a fra ...

  7. 马老师 Linux基础入门

    总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线.地址总线和控制总线,分别用来传输数据.数据地址和控 ...

  8. Android开发学习之SQLite数据存取浅析

    一.SQLite的介绍 1.SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低 ...

  9. (转)Stack Overflow 2016最新架构探秘

    这篇文章主要揭秘 Stack Overflow 截止到 2016 年的技术架构. 首先给出一个直观的数据,让大家有个初步的印象. 相比于 2013 年 11 月,Stack Overflow 在 20 ...

  10. 转: javascript动态添加、修改、删除对象的属性和方法

    在其他语言中,对象一旦生成,就不可更改了,要为一个对象添加修改成员必须要在对应的类中修改,并重新实例化,而且程序必须经过重新编译.JavaScript 中却非如此,它提供了灵活的机制来修改对象的行为, ...