初学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. TypeScript 优秀开源项目大合集

    TypeScript出来有段时间了,也冒出了很多用TypeScript开发的优秀开源项目,搜寻了一些基于TypeScript项目,分享给大家: https://github.com/brookshi/ ...

  2. 《新手养成记》--第一篇 iOS手机号正则判断和获取验证码

    今天是开通一个新博客开启新的一年,同时也是对自己的过去做一个告别.介绍一下博主自己,资深iOS屌丝男,今天写这个博客就是刻意拉低逼格的,前两年写的博客为了装那什么,故意写的高大上,其实呵呵哒...年假 ...

  3. android sdk 深入理解adb

    adb 服务器-客户端程序包括3部分 1.客户端(client) 在开发机器上运行,可通过adb命令行呼叫客户端,ADT插件和DDMS同样需要adb客户端   2.服务端(server) 在开发机器上 ...

  4. 476. Number Complement

    题目 Given a positive integer, output its complement number. The complement strategy is to flip the bi ...

  5. python服务器环境搭建(2)——安装相关软件

    在上一篇我们在本地的虚拟服务器上安装好CentOS7后,我们的python web服务.自定义的python service或python脚本需要在服务器上运行,还需要在服务器安装各种相关的软件才行, ...

  6. bing翻译API调用方法

    概述 前一段时间,遇到一个需求,需要对文章进行翻译,由于客户公司员工有国内的人员,也有国外的人员,为了照顾国外的同事,客户提出,当用户在手机端发布帖子,需要同时把帖子的内容翻译成英文,方便用户阅读.于 ...

  7. Beautils工具类实现的原理

    关于内省机制和反射机制请看这一篇博客[还没写完,在草稿中]. 先说一下什么叫做 bean 属性,bean 属性指的是 get / set 方法后的名称,而不是类的属性: 比如: private Str ...

  8. iOS开发之应用程序启动图片规格

    一个app在启动过程中会全屏显示叫做Default.png的图片 各种规格Default的使用场合: Default.png:非retina-iPhone屏幕,320x480 Default@2x.p ...

  9. windows32位安装MYSQL-python1.2.3

    建议不要用pip安装MYSQL-python,因为会自动选择MYSQL-python1.2.5这个版本,但是这个版本不支持windows 32位系统. 1.首先安装VS2008,因为要依赖VC9.0编 ...

  10. css远距离链接

    远距离链接主要运用了hover伪类,但是运用了两次 <!DOCTYPE html> <html lang="en"> <head> <me ...