js,css 文件合并与压缩

Grunt 是前端自动化构建工具,类似webpack。 它究竟有多强悍,请看它的 介绍

这里只演示如何用它的皮毛功能:文件合并与压缩。

首先说下js,css 合并与压缩的好处:

  • 减少 HTTP 请求次数;
  • 节省带宽流量;
  • js 压缩把代码混淆后可看性降低,带来一定安全性;

1. 安装Grunt

Grunt 是运行在 Node.js 平台上,先要 安装 Node.js, 然后 安装 Grunt

npm install -g grunt-cli

2. 使用Grunt

两个关键的配置文件:

  • Gruntfile.js 是用来配置和定义任务并加载Grunt插件;
  • package.json 是 npm 用来配置项目的元数据,如配置文件合并与压缩依赖的插件;
我们的 DEMO 项目Gruntfile.js 配置文件:

'use strict'; module.exports = function(grunt) { // 项目配置
grunt.initConfig({
// 加载元数据
pkg: grunt.file.readJSON('package.json'),
banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' +
'<%= grunt.template.today("yyyy-mm-dd") %>*/\n',
// 合并任务配置
concat: {
options: {
banner: '<%= banner %>',
stripBanners: true,
},
css: {
// 源文件,数组,
src: ['src/css/test1.css', 'src/css/test2.css'],
// 目标文件, pkg.name 是定义在 package.json 文件中的 name
dest: 'dest/<%= pkg.name %>.css'
},
js: {
options: {
// js 文件合并用 ';'分隔
separator: ';',
},
src: ['src/js/test1.js', 'src/js/test2.js'],
dest: 'dest/<%= pkg.name %>.js'
},
},
// 压缩 css 文件
cssmin: {
css: {
src: 'dest/<%= pkg.name %>.css',
dest: 'dest/<%= pkg.name %>-min.css'
}
},
// 压缩 js 文件
uglify: {
js: {
src: 'dest/<%= pkg.name %>.js',
dest: 'dest/<%= pkg.name %>.min.js'
},
},
}); // These plugins provide necessary tasks.
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-css');
// 指定默认任务.
grunt.registerTask('default', ['concat','cssmin','uglify']);
};

每个配置的作用和意义,请看上面的注释,应该很清晰了,注意的是任务的命名不能改: concat, cssmin,uglify, 否则不识别;

package.json 配置
{
"name": "all",
"description": "js,css 文件合并与压缩",
"version": "0.1.0",
"homepage": "https://git.oschina.net/grissom/grunt_demo.git",
"author": "Grissom",
"repository": {
"type": "git",
"url": "https://git.oschina.net/grissom/grunt_demo.git"
},
"engines": {
"node": ">= 0.10.0"
},
"devDependencies": {
"grunt-contrib-concat": "~0.3.0",
"grunt-contrib-uglify": "~0.2.0",
"grunt": "~0.4.5",
"grunt-css": ">0.0.0"
},
"keywords": []
}

3. 执行Grunt

  • 打开 Node.js 的命令行窗口;
  • 进入到项目的路径;
  • 安装依赖插件, 执行 npm install 命令;
  • 执行合并与压缩任务 grunt 命令;

Demo 源码

开箱即用 - Grunt合并和压缩 js,css 文件的更多相关文章

  1. MVC打包压缩JS&CSS文件调试时过滤了一些文件

    BundleTable.这个确实是比较好用,打包并压缩了CSS,使之加载时减少流量. 但是在调试的时候会疑问为何有很多JS,CSS文件无法打包,其实是因为调试时VS自动过滤了如下文件:   后台跟踪了 ...

  2. gulp入门-压缩js/css文件(windows)

    类似于grunt,都是基于Node.js的前端构建工具.不过gulp压缩效率更高. 工具/原料 nodejs/npm 方法/步骤 首先要确保pc上装有node,然后在global环境和项目文件中都in ...

  3. IIS7.5打开GZip压缩,同时启用GZip压缩JS/CSS文件的设置方法[bubuko.com]

    IIS7.5或者IIS7.0开启GZip压缩方法:打开IIS,在右侧点击某个网站,在功能视图中的“IIS”区域,双击进入“压缩”,如图下图: 分别勾选“启用动态内容压缩”和“启用静态内容压缩”.这样最 ...

  4. Web网站配置Gzip,压缩js css文件

    启用apache的gzip 找到httpd.conf,打开文件找到对mod_deflate的注释 #LoadModule deflate_module modules/mod_deflate.so 去 ...

  5. 用GruntJS合并、压缩JS文件

    为什么要合并.压缩你的JS文件?        一个项目开发完成我们总能发现有一堆js文件非常混乱.           一般在一个HTML文档加载的时候,浏览器会根据HTML代码从上到下读取所需要加 ...

  6. ASP.NET MVC 4 Optimization的JS/CSS文件动态合并及压缩

    JS/CSS文件的打包合并(Bundling)及压缩(Minification)是指将多个JS或CSS文件打包合并成一个文件,并在网站发布之后进行压缩,从而减少HTTP请求次数,提高网络加载速度和页面 ...

  7. JS&CSS文件请求合并及压缩处理研究(五)

    接上篇.在我们最终调用 @Html.RenderResFile(ResourceType.Script) 或者 @Html.RenderResFile(ResourceType.StyleSheet) ...

  8. java Web程序使用wro4j合并、压缩js、css等静态资源

    在Web项目中,js.css合并压缩,不仅有利于减少Http请求数量.减少宽带资源占用,还能有效的管理各种js.css的引入,使整个项目更加有序.而对于访问用户来说,其更大的好处是增加了页面的打开速度 ...

  9. 前端js,css文件合并三种方式,bat命令

    前端js,css文件合并三种方式,bat命令 前端js文件该如何合并三个方式如下:1. 一个大文件,所有js合并成一个大文件,所有页面都引用它.2. 各个页面大文件,各自页面合并生成自己所需js的大文 ...

随机推荐

  1. 打开地图文件和shape文件代码加载Mxd文档

    代码加载Mxd文档 用代码添加Mxd文档,用到AxMapControl.LoadMxFile(sFilePath),我们只要将Mxd文档的路径传给这个方法即可 /// <summary>  ...

  2. PAT (Advanced Level) 1082. Read Number in Chinese (25)

    模拟题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...

  3. PAT (Advanced Level) 1080. Graduate Admission (30)

    简单题. #include<cstdio> #include<cstring> #include<cmath> #include<vector> #in ...

  4. after和before的属性妙用

    ::after或::before设置它们的样式时有一个content这个属性这里可以写attr(data-label)其中data-label是标签上设置的data属性里的数据content:attr ...

  5. Sping--AOP--Annotation

    Aspectj 概念: 1. joinpoint:切入点, 比如@Before, @After, @Around 2. Pointcut:切入点集合, 比如 @Pointcut("execu ...

  6. HDU 5616 Jam's balance

    背包.dp[i]=1表示i这种差值能被组合出来,差值有负数,所以用sum表示0,0表示-sum,2*sum表示sum. 询问X的时候,只需看dp[sum+X]或者dp[sum-X]是否有一个为1,注意 ...

  7. Unity NGUI UIPanel下对粒子的剪裁

    使用 unity 做游戏开发时,有时需要在scroll view下使用粒子,但粒子是不会被 UIPanel 所裁剪的,本人提供了脚本 ParticleSystemClipper,用来处理这种情况.思路 ...

  8. November 11th 2016 Week 46th Friday

    Keep in mind that neither success nor failure is ever final. 无论成败,皆非定局. The final is not coming, but ...

  9. POJ 1862 Stripies

    每次合并最大的两个,优先级队列维护一下. 输出的时候%.3lf G++会WA,C++能AC,改成%.3f,都能AC. #include<cstdio> #include<cstrin ...

  10. js 设置url 参数值

    //设置url中参数值 function setParam(param,value){ var query = location.search.substring(1); var p = new Re ...