gulp开发:gulp入门

本文介绍了如何使用Gulp构建前端自动化工作流,包括HTML处理、CSS预处理、JS压缩、图片优化、自动刷新等功能。详细讲解了常用插件如gulp-ruby-sass、gulp-uglify、gulp-imagemin的安装和配置,以及文件重命名、源地图和文件清理等优化任务。
摘要由CSDN通过智能技术生成

Gulp构建前端自动化工作流

Gulp构建前端自动化工作流之:常用插件介绍及使用

在对Gulp有了一个初步的了解之后,我们开始构建一个较为完整的Gulp开发环境。

本文主要分为6个段落:

  • 1. 构建项目目录结构(Directory Structure Build)
  • 2. 插件介绍及使用方法(Tasks and dependencies)
  • 3. 扩展优化(Extend & Optimize Task)
  • 4. 其他插件介绍(Other plug-ins)
  • 5. 匹配规则(Match Files)
  • 6. 注意事项(Attention)

关于Gulp的入门介绍及安装方法,可先去《Gulp构建前端自动化工作流之:入门介绍及LiveReload的使用》 这篇文章查看。对其有个初步认识后,便于后文的理解。

1. 构建项目目录结构(Directory Structure Build)

+ my-gulp(项目文件夹)
  + node_modules Gulp组件目录
  + dist 发布环境
  + css 编译后的CSS文件
    ─ etc...
  + images 压缩后的图片文件
    ─ etc...
  + js 编译后的JS文件
    ─ etc...
  ─ html 静态文件
  + src 开发环境
  + sass SASS文件
    ─ etc...
  + images 图片文件
    ─ etc...
  + js JS文件
    ─ etc...
  ─ html 静态文件
  ─ gulpfile.js Gulp任务文件

注:
+ 表示目录  ─ 表示文件

2. 插件介绍及使用方法(Tasks and dependencies)

2.1 HTML处理(HTML Task)

仅把开发环境中的HTML文件,移动至发布环境。

基础配置:

gulp.task('html', function() {
  return gulp.src('src/**/*.html') // 指明源文件路径、并进行文件匹配
    .pipe('dist'); // 输出路径
});

执行命令: gulp html

2.2 样式处理(CSS Task)
CSS预处理/Sass编译 (gulp-ruby-sass) :

相比较glup-sass而言,速度会稍许慢点,但功能更多并且稳定。

安装SASS:

  1. 像Gulp基于Node.js一样,Sass基于Ruby环境,所以我们先去官网下载并安装Ruby(在安装的时候,请勾选Add Ruby executables to your PATH这个选项,添加环境变量,不然以后使用编译软件的时候会提示找不到ruby环境)。
  2. 安装完ruby之后,在开始菜单中,找到刚才我们安装的ruby,打开Start Command Prompt with Ruby
  3. 然后直接在命令行中输入gem install sass按回车键确认,等待一段时间就会提示你sass安装成功。

注: 由于近期墙的比较严重,外加(上海)电信限制了外网访问速度。如果安装失败,请使用淘宝的Ruby镜像。具体操作方法请参考淘宝RubyGems镜像安装 sass

安装命令: npm install gulp-ruby-sass --save-dev

基础配置:

var gulp = require('gulp'); // 基础库
var sass = require('gulp-ruby-sass'); // sass/scss编译

gulp.task('sass', function () {
     return sass('src/css', { style: 'compressed' }) // 指明源文件路径、并进行文件匹配(style: 'compressed' 表示输出格式)
          .on('error', function (err) {
               console.error('Error!', err.message); // 显示错误信息
          })
          .pipe(gulp.dest('dist/css')); // 输出路径
});

执行命令: gulp sass

插件提供4种输出格式: nested:嵌套缩进的css代码,它是默认值。 expanded:没有缩进的、扩展的css代码。 compact:简洁格式的css代码。 compressed:压缩后的css代码。

注: 使用前清看清 gulp-ruby-sass 写法,不要直接拿 gulp-sass 的写法来套用,两者并不完全相同。

2.3 脚本压缩&重命名(Javascript Task)
JS文件压缩(gulp-uglify):

使用uglify引擎压缩JS文件。

安装命令: npm install gulp-uglify --save-dev

基础配置:

var gulp = require('gulp'); // 基础库
var uglify = require('gulp-uglify'); // js压缩

gulp.task('script', function() {
  return gulp.src('src/js/*.js') // 指明源文件路径、并进行文件匹配
    .pipe(uglify({ preserveComments:'some' })) // 使用uglify进行压缩,并保留部分注释
    .pipe(gulp.dest('dist/js')); // 输出路径
});

执行命令: gulp script

2.4 图片处理(Image Task)
图片压缩(gulp-imagemin) + 深度压缩(imagemin-pngquant):

压缩PNG、JPEG、GIF和SVG图像。 gulp-imagemin集成了gifsicle 、jpegtran 、optipng 、svgo 这4个插件。而imagemin-pngquant是imagemin插件的一个扩展插件,用于深度压缩图片。

安装命令: npm install gulp-imagemin imagemin-pngquant --save-dev

基础配置:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
grunt-workflow 是一个帮助前端开发工程师简化工作的工具,它的主要功能是: webserver livereload,能保存文件的时,自动刷新浏览器. 自动编译sass 压缩图片 合并图片 添加文件注释 自动补全css3浏览器前缀 初始化项目目录结构及文件 支持ejs模板 安装相关软件 安装 nodejs window 安装地址 , mac 推荐通过brew安装brew install node 安装 grunt-cli npm install -g grunt-cli 安装 grunt-init npm install -g grunt-init 将当前git克隆到本地%USERPROFILE%\.grunt-init\(Mac平台 ~/.grunt-init/),如果没有.grunt-init目录可用mkdir .grunt-init命令创建 安装 Graphics Magick(gm),下载地址 (Mac平台 brew install GraphicsMagick) 安装 PhantomJS,下载地址 (Mac平台 brew install phantomjs) 安装 sass gem install sass 初始化新项目 在项目目录下执行 grunt-init lego (注意:项目目录要为空文件夹,不然会报错) 根据提示填写相关的内容 执行 npm install 命令下载安装相关依赖 快速在当前文件夹打开命令行 win7:首先按住Shift键,然后选择某文件夹后或在某文件夹中的空白处右键单击,快捷菜单中会多出“在此处打开命令窗口”,选择这个选项即可 Mac:安装 gotoshell 建立软链接 使用下面命令能避免每次在新项目开始前都要使用 npm install 下载相关的grunt插件 window: - mklink /d .\node_modules C:\Users\Administrator\Desktop\grunt_plugins\node_modules mac:ln -s ~/Documents/grunt_plugins/node_modules ./node_modules (~/Documents/grunt_plugins/node_modules) 目录是存放grunt插件的文件夹 项目目录结构 └── src     ├── _index.html     ├── css     │   └── lib     ├── img     ├── js     │   └── lib     ├── sass     ├── partial     ├── data     └── slice html页面存放在src文件夹,支持ejs模板(见5)。 css存放在 src/css 文件夹,第三方的样式库放在 src/css/lib js存放在 src/js 文件夹,第三方的样式库放在 src/js/lib src/slice 文件夹放需要合并的图片;若需要多张雪碧图,则自建子文件夹,一个子文件夹对应一张雪碧图,子文件名为雪碧图名(注意,需要替换雪碧图的css文件,切片使用background-image属性来引入,不使用background属性引入。) ejs模板片段放在src/partial文件夹,模板数据放在src/data文件夹。配置数据统一在src/data/config.json指定(注意:没有配置的html页面不参与ejs渲染)。 注意:src/css/lib 和 src/js/lib 里的文件是不会被压缩的。 任务 项目安装好了相关的配置就可以在命令行下使用grunt任务 grunt 默认打开一个webserver,查看的文件是在开发目录下,支持livereload,sass自动编译,ejs编译 grunt port:端口号 指定端口打开一个webserver,查看的文件是在开发目录下,支持livereload,sass自动编译,ejs编译 grunt release 生成发布文件,执行gunt release生成一个dest的目录,检测样式文件里的本地资源引用,如果有无效引用则中断任务,否则执行后续任务:编译html,压缩css、js文件,自动生成sprit图片,替换css样式里的链接。dest里的文件是发布使用的。 grunt dest 打开一个webserver,显示dest目录 grunt assets:提交注释 提交dest里面的静态文件(css、js、img)到静态文件服务器,提交路径为%SVN_REMOTE_DIR%/<description>/<name>/<version>,详见注意事项。 grunt zip 打包src和dest文件给技术。其中dest文件夹作如下处理:将 dest/*.html 的 相对路径的静态资源 引用替换为线上路径;若不需替换,资源路径换成 绝对路径 。 该命令在grunt release后执行,线上路径由 包描述文件(见注意事项) 指定。dest里的静态资源可通过grunt assets或手动上传到assets服务器。 可选配置 配置文件: ~/.grunt-init/config.json IS_EXEC_CUSTOM_CMD 是否启用初始化时执行默认命令,默认不启动。 LINK_SRC_NODE_MODULES 建立node_modules软链接的源路径。(建议mac用户指定到~/.node_modules, win用户指定到%USERPROFILE%\.node_modules) OPEN_APP 初始化目录后启动APP打开当前项目。 注意事项 提交到 svn-work 时(需手动提交),只上传配置文件 Gruntfile.js 、 package.json 和源码文件夹 src/ 即可 提交到 svn-assets 时,需说明:svn-assets提交路径为%SVN_REMOTE_DIR%/<description>/<name>/<version>,对应线上路径为 http://assets.dwstatic.com/<description>/<name>/<version> description,项目类型,取值:project、game、special name,项目名,不要出现中文字符 version,项目版本,默认值:1.0.0 修改模板文件~/.grunt-init/lego/root/Gruntfile.js里面push_svn任务的用户信息 在grunt-init lego时注意以下字段的填写,或者在初始化后的 package.json 中修改对应字段 标签:grunt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值