初学grunt 压缩,做个记录。备忘。

【JS压缩】

先比较yui compressor 与 uglify  代码压缩,

yui compressor,使用起来很简单。需要jdk。

https://github.com/yui/yuicompressor/releases
使用方式
//压缩js
java -jar yuicompressor-2.4.8.jar --type js --charset utf-8 -v jquery-ui.js > jquery-ui.min.js
//压缩css
java -jar yuicompressor-2.4.8.jar --type css --charset utf-8 -v src.css > packed.css

为了方便,推荐使用TB compressor,右键即可操作。

Uglify
,grunt中插件。需要nodejs环境。JQuery即采用此压缩。

安装:npm install grunt-contrib-uglify --save-dev

Grunt安装等详细操作,参考前辈的教程:http://blog.csdn.net/wangfupeng1988/article/details/46418203

uglify的详细配置使用可参考:http://www.cnblogs.com/artwl/p/3449303.html

自己写的一个可以批量的Gruntfile.js:

module.exports =  function(grunt){
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'), uglify:{
options:{
banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
'<%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
releaseJS:{
files:[{
expand: true,
cwd:'src/js', //源目录
ext:'.min.js', //压缩名后缀
src:'**/*.js', //所有js
dest:'release/js' //压缩到此目录
}]
}
},
});
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.registerTask('default',['uglify']);
}

尝试写了个js压缩下,针对这个js后者压缩率更高些。条件选择压成三目,1000变为1e3。

/* 原有js */
function randomUrl(url){
if(url.indexOf('?')==-1){
return url+='?t=' + Math.random(1000); }else{
return url+='&t=' + Math.random(1000);
}
} /*! YUI compressor*/
function randomUrl(a){
if(a.indexOf("?")==-1){
return a+="?t="+Math.random(1000)
}else{
return a+="&t="+Math.random(1000)
}
} <pre name="code" class="javascript">/*! grunt_test - v1.0.0 - 2016-03-02 */
function randomUrl(a){
return a+=-1==a.indexOf("?")?"?t="+Math.random(1e3):"&t="+Math.random(1e3)}

在线压缩:http://tool.css-js.com/

【css压缩】

可用cssmin 压缩css。

测试时 曾发现一个文件压缩后反而变大了,仔细对比了下,发现原css中用@import引入了其他css。压缩后直接把导入的东西一并压缩了,反而越压越大。

查询npm的这个插件官网时,在“Release history”中看到一句话 “2013-05-25 v0.6.1 Support import in-lining vis clean-css ~1.0.4.”

可能是本问题的原因。

安装:npm install grunt-contrib-cssmin --save-dev

配置:

<pre name="code" class="javascript">cssmin:{
options:{
banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
'<%= grunt.template.today("yyyy-mm-dd") %> */\n',
beautify: {
//中文ascii化,防中文乱码
ascii_only: true
}
}, releaseCSS:{
files:[{
expand: true,
cwd:'app_source/css', //源目录
// ext:'.min.css', //压缩名后缀 注释掉表示用原名字
src:'**/*.css', //所有css
dest:'release/css' //压缩到此目录
}]
}
},

【图片压缩】

imagemin图像压缩

安装:npm
install grunt-contrib-imagemin --save-dev


配置

		imagemin: {
options: {
optimizationLevel: 3 // png图片优化水平,3是默认值,取值区间0-7
},
releaseIMG: {
files:[{
expand: true, // 开启动态扩展
cwd: "src/images/", // 当前工作路径
src: ["**/*.{png,jpg,gif}"], // 要出处理的文件格式(images下的所有png,jpg,gif)
dest: "images/" // 可设置同输出目录(直接覆盖原图)
}]
}
},

concat合并之类都类似。

参考:http://www.cnblogs.com/hubcarl/p/4095122.html

执行命令:

d: 、cd等各种命令,先进入项目根目录,然后直接grunt。

也可以单独执行命令 如  grunt uglify   或 grunt  cssmin等

初学grunt压缩的更多相关文章

  1. 如何使用grunt压缩js文件

    jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发人员,如果你现在还不知道grunt或者听说过 ...

  2. 吉特仓储管系统(开源)--使用Grunt压缩JS文件

    在吉特仓储管理系统开发的过程中大量使用到了JS,随着JS文件的增多我们需要对JS进行有效的管理,同时也要对JS文件进行一些压缩.文本用于记录一下使用grunt压缩JS的操作步骤,便于遗忘之后记录查找, ...

  3. Grunt压缩HTML和CSS

    我的小伙伴们!我明明 在压缩图片之前发过一篇,关于Grunt压缩cCSS是和HTML的!但是不知道为什么,今天再一看.迷之消失了! 没办法.只好今天在写一次,从头开始!首先.我来介绍一下为什么要用构建 ...

  4. 折腾一两天,终于学会使用grunt压缩合并混淆JS脚本,小激动,特意记录一下+spm一点意外收获

    很长时间没有更新博客了,实在是太忙啦...0.0 ,以下的东西纯粹是记录,不是我原创,放到收藏夹还担心不够,这个以后常用,想来想去,还是放到这里吧,,丢不了..最后一句废话,网上搜集也好原创也罢,能解 ...

  5. grunt压缩js文件

    grunt是node中很好的管理项目的工具,利用它可以实现对整个项目的管理,避免很多重复性的工作如合并.压缩,检查语法等. 使用grunt首先要安装node环境,nodejs官网http://node ...

  6. 如何用grunt压缩文件

    grunt-cli 全局装完之后,就可以给每个项目装grunt了.   1.先把package.json和Gruntfile.js拷到项目下(PS:这两个文件是每个项目装grunt的时候必带的) 2. ...

  7. grunt压缩合并代码

    module.exports = function(grunt) { // 配置 grunt.initConfig({ pkg : grunt.file.readJSON('package.json' ...

  8. grunt压缩多个js文件和css文件

    压缩前的工程目录: 1.安装js,css需要的插件 使用npm安装:npm install grunt-contrib-uglify --save-dev  -------->安装js压缩插件 ...

  9. Grunt压缩图片

    今天我们来说一下用Grunt来压缩图片和JS吧! 首先要安装插件: 这是压缩图片的; npm install --save-dev gulp-imagemin 这是压缩JS的: npm install ...

随机推荐

  1. 做推送,怎么能不了解推送的 4 种消息形式呢?(iOS 篇)

    极光推送是为 App 提供第三方推送服务的平台之一,它提供四种消息形式:通知,自定义消息,富媒体和本地通知.笔者将基于官方说明与个人理解来谈一下这四种消息.本篇为 iOS 篇,Android 篇入口. ...

  2. .NET基础笔记(C#)

    闲着没事就把以前学习时的笔记拿出来整理了一下,个人感觉有点用,就想拿出来跟园友共享一下.有些基础性的内容比如基本概念.语法什么的就不发了. 内容:1.构造方法(函数) 2.继承   3.访问修饰符   ...

  3. 如何理解jQuery中的ajaxSubmit方法

    版权声明:本文为博主原创文章,转载请标注:www.cnblogs.com/gdsblog 刚刚学习中,使用到了ajaxSubmit,犹豫以前没有接触㢧这个,所以刚开始是一脸懵逼状态,最后通过查找资料的 ...

  4. 3016: [Usaco2012 Nov]Clumsy Cows

    3016: [Usaco2012 Nov]Clumsy Cows Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 91  Solved: 69[Submi ...

  5. 1660: [Usaco2006 Nov]Bad Hair Day 乱发节

    1660: [Usaco2006 Nov]Bad Hair Day 乱发节 Time Limit: 2 Sec  Memory Limit: 64 MB Submit: 665  Solved: 31 ...

  6. JAVA面试题和答案

    本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力.下面的章节分为上下两篇,第一篇将要讨论面向对象编程和它的特点,关于Java和它的功能 ...

  7. SEO-站外优化规范

    站外优化规范 新站 前期(提高网站曝光率<信息发布平台>) 一. 分类目录信息发布 二. 黄页网信息发布 三. 友链平台信息发布 四. 各大论坛引蜘蛛区信息发布 五. 网址提交 六. 社区 ...

  8. Solr DateRangeField

    Solr DateRangeField 是solr5.0 实现的一个feature. 关于 DateRangeField 支持日期查询如  date_field:[2016-03-23 TO 2017 ...

  9. jquery写日期选择器

    跟上我的脚步,让我们来领略代码的世界! 使用jquery做一个日期时间选择器,最好使用bootstrap弹窗 实现: (1)点击文本框弹出窗口: (2)弹窗里面显示日期时间选择下拉 (3)年份取当前年 ...

  10. ubuntu桌面不显示菜单

    为什么?我也不知道,只记得之前在搜狐看了行尸走肉,然后第二次开机就看不到菜单了. 参照百度结果然后去尝试了一下,记过ok了,我的ubuntu是13.10. 图说: 看到这里就应该大概怎么做了. 1   ...