初学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. 项目架构开发:数据访问层之UnitOfWork

    接上文 项目架构开发:数据访问层之IQuery 本章我们继续IUnitOfWork的开发,从之前的IRepository接口中就可以看出,我们并没有处理单元事务, 数据CUD每次都是立即执行的,这样有 ...

  2. 构建Docker平台【第四篇】创建服务及扩缩容等操作

    第一步:创建服务 1. 配置 nginx 的 yaml 文件 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: my-ng ...

  3. Vue 2.0初学后个人总结及分享

    摘要:最近在上海找工作,发现Vue前景还不错,于是就打算先学习一下(之前了解过,但是一直没提到日程上)这篇随笔当是为了自己学习之后,做一个小的阶段性总结.希望本文的内容对于刚开始接触vue的朋友们有点 ...

  4. mac air 上的Linux命令训练(1)

    1.cat命令 作用: 读取一个文件的全部内容,并将它输出,如果将它输出到一个目标文件,目标文件将会被替换掉. 参数: -n : 加上行号输出 -b:加上行号,但是不加空白行,输出 -s:当遇到多行空 ...

  5. 加入大型的js文件如jQuery文件,Eclipse会报错

    在使用Eclipse3.7及以后的版本的时候,加入大型的js文件如jQuery文件,会报错(missing semicolon),文件中会显示红色小X,虽然这个错误并不会影响项目的运行,但是这个却会大 ...

  6. wxWidgets 的 Linux / Windows 混合开发环境

    目标 建立一个开发 GUI 交互界面程序的环境,要求: 以 C/C++ 为主要程序设计语言. 最好能充分利用已有的 MFC 开发经验. 以 Linux 为主要开发环境.可以在 Windows 中编译并 ...

  7. Angular企业级开发(9)-前后端分离之后添加验证码

    1.背景介绍 团队开发的项目,前端基于Bootstrap+AngularJS,后端Spring MVC以RESTful接口给前端调用.开发和部署都是前后端分离.项目简单部署图如下,因为后台同时采用微服 ...

  8. Apache Flume日志收集系统简介

    Apache Flume是一个分布式.可靠.可用的系统,用于从大量不同的源有效地收集.聚合.移动大量日志数据进行集中式数据存储. Flume简介 Flume的核心是Agent,Agent中包含Sour ...

  9. jQuery遮罩插件 jquery.blockUI.js

    Overview jQuery BlockUI 插件可以在不同锁定浏览器的同时,模拟同步模式下发起Ajax请求的行为.该插件激活时,会组织用户在页面进行的操作,直到插件被关闭.BlockUI通过向DO ...

  10. Office 365 开发概览系列文章和教程

    Office 365 开发概览系列文章和教程 原文于2017年2月26日首发于LinkedIn,请参考链接 引子 之前我在Office 365技术社群(O萌)中跟大家提到,3月初适逢Visual St ...