引用:https://www.jianshu.com/p/08c7babdec65

压缩 js 文件

1、创建一个目录 名为grunt

 
目录.png

2、在grunt目录下创建一个 src目录,存放我们要压缩、合并的js文件。

 
图片.png

3、创建package.json文件

 
文件.png
  • package.json文件,包含了项目的一些信息,如项目的名称、描述、版本号、依赖包等。
    package.json文件中的内容如下:
{
"name": "grunt",
"file": "zepto",
"version": "0.1.0",
"description": "demo",
"devDependencies": {
"grunt": "~0.4.0",
"grunt-contrib-requirejs": "~0.4.1",
}
}

执行命令 npm install 下载相关文件,成功后在下载压缩js文件所需要的grunt-contrib-uglify插件,并更新package.json文件。

 
js压缩插件安装.png

安装成功后package.json文件内容如下:

{
"name": "grunt",
"file": "zepto",
"version": "0.1.0",
"description": "demo",
"license": "MIT",
"devDependencies": {
"grunt": "~0.4.1",
"grunt-contrib-requirejs": "~0.4.1",
"grunt-contrib-uglify": "^3.0.1" //js压缩插件 }
}

4、创建Gruntfile.js 文件

Gruntfile.js 文件就是一个普通的js文件,几乎所有的任务都定义在该文件中。
Gruntfile.js 文件内容如下:

module.exports = function (grunt) {
// 项目配置
grunt.initConfig({
//grunt.file.readJSON 将我们的配置文件读出,并且转换为json对象
pkg: grunt.file.readJSON('package.json'),
uglify: {
options: {
// 压缩输出头信息
banner: '/*! <%= pkg.file %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
build: {
src: 'src/<%=pkg.file %>.js', //压缩src文件夹下的xxx.js文件为xxx.min.js 并放到dest文件夹。
dest: 'dest/<%= pkg.file %>.min.js'
}
}
});
// 加载提供"uglify"任务的插件
grunt.loadNpmTasks('grunt-contrib-uglify');
// 默认任务
grunt.registerTask('default', ['uglify']);
}

4、执行grunt任务

 
压缩执行结果.png

在dest文件中就生成了zepto.min.js文件,如果没有 dest文件会自动创建一个dest文件夹。

 
图片.png

整个目录结构如下:

 
图片.png

合并 js 文件

合并js依赖于 "grunt-contrib-concat"插件,下载grunt-contrib-concat插件并更新package.json文件。

{
"name": "grunt",
"file": "zepto",
"version": "0.1.0",
"description": "demo",
"devDependencies": {
"grunt": "~0.4.0",
"grunt-contrib-requirejs": "~0.4.1",
"grunt-contrib-concat": "~0.1.1" //合并文件
"grunt-contrib-uglify": "~0.1.2", //压缩,采用UglifyJs
}
}

Gruntfile.js 内容修改如下:

module.exports = function (grunt) {
// 项目配置
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
concat: {
options: {
separator: ';'
},
dist: {
//合并三个 js 到 libs.js 文件
src: ['src/zepto.js', 'src/underscore.js', 'src/backbone.js'],
dest: 'dest/libs.js'
}
}
});
grunt.loadNpmTasks('grunt-contrib-concat');
// 默认任务
grunt.registerTask('default', ['concat']);
}

生成的 libs.js文件

 
合并.png

整个目录结构:

 
图片.png

合并 并压缩js 文件

Gruntfile.js文件内容如下:

module.exports = function (grunt) {
// 项目配置
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
//合并js
concat: {
dist: {
src: ['src/zepto.js', 'src/underscore.js', 'src/backbone.js'],
dest: 'dest/libs.js'
}
},
//压缩合并后的js文件
uglify: {
build: {
src: 'dest/libs.js',
dest: 'dest/libs.min.js'
}
}
});
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-concat');
// 默认任务
grunt.registerTask('default', ['concat', 'uglify']);
}
 
合并 压缩.png

压缩css 文件

首先要安装插件 grunt-contrib-cssmin,并更新package.json文件。

 
插件安装.png

package.json文件内容更新如下

{
"name": "grunt",
"file": "zepto",
"version": "0.1.0",
"description": "demo",
"license": "MIT",
"devDependencies": {
"grunt": "~0.4.1",
"grunt-contrib-requirejs": "~0.4.1",
"grunt-contrib-concat": "~0.1.1",
"grunt-contrib-cssmin": "^2.2.0",
"grunt-contrib-uglify": "~0.2.1",
},
"dependencies": {
"cssmin": "^0.4.3",
"express": "3.x"
}
}

Gruntfile.js文件内容:

module.exports = function (grunt) {
// 项目配置
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
cssmin:{
options:{
stripBanners:true, //合并时允许输出头部信息
banner:'/*!<%= pkg.file %> - <%= pkg.version %>-'+'<%=grunt.template.today("yyyy-mm-dd") %> */\n'
},
build:{
src:'src/css/index.css',//压缩
dest:'dest/css/index.min.css' //dest 是目的地输出
}
}
});
grunt.loadNpmTasks('grunt-contrib-cssmin');
// 默认任务
grunt.registerTask('default', ['cssmin']);
}

执行命令 grunt

 
图片.png

结果生成index.min.css

 
压缩.png

合并css 文件

合并css文件用的插件是grunt-contrib-concat,上面已经安装过了,直接看Gruntfile.js中的代码。

module.exports = function (grunt) {
// 项目配置
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
concat: {
options: {
separator: ';'
},
cssConcat: {
src: ['src/css/zepto.css', 'src/css/underscore.css', 'src/css/backbone.css'],
dest: 'dest/css/libs.css'
}
},
});
grunt.loadNpmTasks('grunt-contrib-concat');
// 默认任务
grunt.registerTask('default', ['concat']);
}

执行grunt命令,结果生成libs.css文件

 
合并.png

合并js、css文件并压缩文件

package.json文件

{
"name": "grunt",
"file": "zepto",
"version": "0.1.0",
"description": "demo",
"license": "MIT",
"devDependencies": {
"grunt": "~0.4.1",
"grunt-contrib-concat": "~0.1.1", //合并js css 插件
"grunt-contrib-cssmin": "^2.2.0", //压缩css插件
"grunt-contrib-uglify": "~0.2.1", //压缩js插件
"grunt-contrib-jshint": "~0.6.3",
"grunt-contrib-requirejs": "~0.4.1",
"grunt-strip": "~0.2.1"
},
"dependencies": {
"cssmin": "^0.4.3",
"express": "3.x"
}
}

Gruntfile.js文件:

module.exports = function (grunt) {
// 项目配置
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
concat: {
options: {
separator: ';'
},
//合并css
cssConcat: {
src: ['src/css/zepto.css', 'src/css/underscore.css', 'src/css/backbone.css'],
dest: 'dest/css/libs.css'
},
//合并js
jsConcat:{
src:['src/zepto.js','src/underscore.js','src/backbone.js'],
dest:'dest/libs.js'
}
},
//压缩css
cssmin:{
options:{
stripBanners:true, //合并时允许输出头部信息
banner:'/*!<%= pkg.file %> - <%= pkg.version %>-'+'<%=grunt.template.today("yyyy-mm-dd") %> */\n'
},
build:{
src:'dest/css/libs.css',//压缩
dest:'dest/css/libs.min.css' //dest 是目的地输出
}
},
//压缩js
uglify: {
build: {
src: 'dest/libs.js',
dest: 'dest/libs.min.js'
}
}
});
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-cssmin');
// 默认任务
grunt.registerTask('default', ['concat','uglify','cssmin']);
}

执行命令grunt,结果

 
图片.png

作者:赵碧菡
链接:https://www.jianshu.com/p/08c7babdec65
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

引用:使用grunt 压缩 合并js、css文件的更多相关文章

  1. Grunt的配置及使用(压缩合并js/css)

    Grunt的配置及使用(压缩合并js/css) 安装 前提是你已经安装了nodejs和npm. 你能够在 nodejs.org 下载安装包安装.也能够通过包管理器(比方在 Mac 上用 homebre ...

  2. 使用PHP和GZip压缩网站JS/CSS文件加速网站访问速度

    使用PHP和GZip压缩网站JS/CSS文件加速网站访问速度 一些泛WEB 2.0网站为了追求用户体验,可能会大量使用CSS和JS文件.这就导致在服务器带宽一定的情况下,多用户并发访问速度变慢.如何加 ...

  3. Web性能优化之动态合并JS/CSS文件并缓存客户端

    来源:微信公众号CodeL 在Web开发过程中,会产生很多的js/css文件,传统的引用外部文件的方式会产生多次的http请求,从而加重服务器负担且网页加载缓慢,如何在一次请求中将多个文件一次加载出来 ...

  4. 前端构建工具 Gulp 压缩合并JS/CSS 并添加版本号、ES6转ES5

    Gulp 基于 Node.js 的前端构建工具,可以实现前端代码的编译(sass.less).压缩合并(JS.CSS).测试:图片的压缩:已经添加 JS 和 CSS 版本号,防止浏览器缓存. 1. 安 ...

  5. 第十一节:Bundles压缩合并js和css及原理分析

    一. 简介 1.背景:浏览器默认一次性请求的网络数是有上限的,如果你得js和css文件太多,就会导致浏览器需要多次加载,影响页面的加载速度, MVC中提供Bundles的方式压缩合并js和css,是M ...

  6. 开箱即用 - Grunt合并和压缩 js,css 文件

    js,css 文件合并与压缩 Grunt 是前端自动化构建工具,类似webpack. 它究竟有多强悍,请看它的 介绍. 这里只演示如何用它的皮毛功能:文件合并与压缩. 首先说下js,css 合并与压缩 ...

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

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

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

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

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

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

随机推荐

  1. [转] Python 字符编码判断

    转自:http://www.cnblogs.com/dkblog/archive/2011/03/02/1980644.html 法一: isinstance(s, str) 用来判断是否为一般字符串 ...

  2. get/post比较

    转载: https://www.oschina.net/news/77354/http-get-post-different https://www.cnblogs.com/wswang/p/6054 ...

  3. English 动词篇

    动词后加to do 和 doing的记忆口诀 一.只能用动名词(ing)作宾语 [口诀] 考虑建议盼原谅,承认推迟没得想. 避免错过继续练,否定完成停欣赏. 禁止想象才冒险,不禁介意弃逃亡. cons ...

  4. 【原创】大叔问题定位分享(18)beeline连接spark thrift有时会卡住

    spark 2.1.1 beeline连接spark thrift之后,执行use database有时会卡住,而use database 在server端对应的是 setCurrentDatabas ...

  5. php curl使用

  6. JAVA 实现 简单的 HTTP服务器

    关于JAVA的HTTP服务器的简单实现,还望大家给出宝贵建议,谢谢. 1.首先来说下HTTP所有的状态碼,相信对于网页开发的博友们,肯定不陌生. 状态码 状态码英文名称 中文描述 100 Contin ...

  7. 网络流24题 ——运输问题 luogu 4015

    题目描述:这里 题面已经提示我们这是费用流了 那么由源点向所有仓库连边,容量为仓库原有货物量,费用为0 然后由所有零售商店向汇点连边,容量为一个零售商店的需求量,费用为0 最后由仓库向零售商店连边,容 ...

  8. 利用远程服务器在docker容器搭建pyspider运行时出错的问题

    This system supports the C.UTF-8 locale which is recommended. You might be able to resolve your issu ...

  9. Base64 加解密

    import java.io.UnsupportedEncodingException; import org.apache.tomcat.util.codec.binary.Base64; /** ...

  10. jquery源码解析日常

    介绍:JQuery是继prototype之后又一个优秀的Javascript库.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF1.5+, Safari 2.0+, Op ...