配置grunt进行css、js的检查、合并和压缩

现在会进行代码的合并和压缩已成为前端人员的必备知识,那么现在来介绍一个grunt的工具。grunt是个风靡世界的工具,它的首页是  http://www.gruntjs.net

这是个中文网站,有文档可以参考。但是只看文档是不是觉得很蛋疼呢?一个字:看不太懂啊!

好了,废话不多说,直接发安装步骤和注意事项,都是心酸研究出来的啊。。。

这里介绍mac的安装方法。windows方法相类似,等我稍微研究一下后再发上来

首先,要安装nodejs,grunt是依赖node滴。上 www.nodejs.org上下载适合你电脑的nodejs版本。如果网站被和谐了,办法你懂的。

当安装好node.js以后,在命令行中输入

 node -v

现在版本的node在安装过程中会自动的把 npm也安装上,npm为一个NodeJS的模块管理

同样,在命令行中输入 ,如果出现版本号,就说明安装成功了。

npm -v

ok,nodejs已经安装好了,在下载安装grunt之前,我们需要建立一个文件目录树,像下面的结构,目的是为了更好的层次关系和更便利的操作

在webstorm中的结构是这样的:

其中,gruntProject里面存放了我们要用的各个文件

Gruntfile.js是我们自己定义的,这个文件用来配置grunt

package.json这个文件是记录下载哪些插件,并配置在Gruntfile.js中,这个后面会详细介绍

src文件夹里面放的是一个css文件夹,一个js文件夹,css文件夹里面放的是演示的css文件,js文件夹里放的是演示用js文件。

dist 文件夹是放压缩以后的css和js文件

lib文件夹里放html文件

完整的文件结构如下:

那package.json里面放什么呢?对了,放咱们配置项,刚开始,如果你用的编辑器没有这么智能的话,只能把下面的内容敲到文件中喽。

ok,万事俱备了,开始下载grunt命令行!

grunt命令行(CLI) 安装在全局环境下,所以命令是这么写滴!

sudo nam install -g grunt-cli

点击回车后,输入你mac的密码,就开始安装了。当安装完了以后,进入我们建立的哪个gruntProject文件夹

cd grunt/gruntProject

这时,就可以安装grunt了,这时grunt的神秘面纱要解开啦

输入

nam install grunt  --save-dev

这时点击回车

有没有发现?已经安装成功了。安装中的warning不用理它。这时,咱们在回过头来看建的树目录,

出现了一个node_modules文件夹。大家打开看看就知道里面是什么了。这充分表明grunt已经安装成功。

之前我们没有说过指令中得--save-dev是什么意思

这句话是与package.json这个文件有关的。

这时再看这个文件

偶?自动把grunt的版本号加上啦。对啦,这就是--save-dev的作用。

这时,在src下面的css和js中各建一个concat文件夹,用于存储合并后的文件

现在还需要几个插件:js、css文件链接成一个文件的插件、压缩的插件、错误检查的插件

安装方法一样,

npm install grunt-contrib-concat --save-dev

回车安装,完成后安装下一个,依次类推

npm install grunt-contrib-csslint --save-dev
npm install grunt-contrib-cssmin --save-dev
npm install grunt-contrib-jshint --save-dev
npm install grunt-contrib-uglify --save-dev
npm install grunt-contrib-watch --save-dev

当我们把这些插件都装完后,我们再看package.json

所有的插件的版本号都有了。下一步,需要对Gruntfile.js 进行配置

module.exports = function(grunt){
    //初始化grunt 配置
    grunt.initConfig({

        //获取package.json的信息
        pkg: grunt.file.readJSON(‘package.json‘),
        //concat插件的配置信息
        concat: {
            options:{
                stripBanners:true, //合并时允许输出头部信息
                banner:‘/*!<%= pkg.name %> - <%= pkg.version %>-‘+‘<%=grunt.template.today("yyyy-mm-dd") %> */‘
            },
            cssConcat:{
                src:[‘src/css/css1.css‘,‘src/css/css2.css‘],
                dest:‘src/css/concat/<%= pkg.name %> - <%= pkg.version %>.css‘ //dest 是目的地输出
            },
            jsConcat:{
                src:‘src/js/*.js‘,
                dest:‘src/js/concat/<%=pkg.name %> - <%= pkg.version %>.js‘
            }
        },
        //压缩css
        cssmin:{
            options:{
                stripBanners:true, //合并时允许输出头部信息
                banner:‘/*!<%= pkg.name %> - <%= pkg.version %>-‘+‘<%=grunt.template.today("yyyy-mm-dd") %> */\n‘
            },
            build:{
                src:‘src/css/concat/<%=pkg.name %> - <%=pkg.version %>.css‘,//压缩是要压缩合并了的
                dest:‘dist/css/<%= pkg.name %> - <%= pkg.version %>.min.css‘ //dest 是目的地输出
            }
        },
        //压缩js
        uglify:{
            options:{
                stripBanners:true, //合并时允许输出头部信息
                banner:‘/*!<%= pkg.name %> - <%= pkg.version %>-‘+‘<%=grunt.template.today("yyyy-mm-dd") %> */\n‘
            },
            build:{
                src:‘src/js/concat/<%=pkg.name %> - <%=pkg.version %>.js‘,//压缩是要压缩合并了的
                dest:‘dist/js/<%= pkg.name %> - <%= pkg.version %>.min.js‘ //dest 是目的地输出
            }
        },

        jshint:{
            options:{
                jshintrc:‘.jshint‘
            },
            build:[‘Gruntfile.js‘,‘src/js/*js‘]
        },

        csslint:{
            options:{
                csslintrc:‘.csslint‘
            },
            build:[‘src/css/*.css‘]

        },
        //watch自动化
        watch:{
            build:{
                files:[‘src/js/*.js‘,‘src/css/*.css‘],
                tasks:[‘jshint‘,‘csslint‘,‘concat‘,‘cssmin‘,‘uglify‘],
                options:{spawn:false}
            }
        }

    });
    //告诉grunt我们将使用插件
    grunt.loadNpmTasks(‘grunt-contrib-concat‘);
    grunt.loadNpmTasks(‘grunt-contrib-cssmin‘);
    grunt.loadNpmTasks(‘grunt-contrib-uglify‘);
    grunt.loadNpmTasks(‘grunt-contrib-jshint‘);
    grunt.loadNpmTasks(‘grunt-contrib-csslint‘);
    grunt.loadNpmTasks(‘grunt-contrib-watch‘);
    //告诉grunt当我们在终端输入grunt时需要做些什么
    grunt.registerInitTask(‘default‘,[‘jshint‘,‘csslint‘,‘concat‘,‘cssmin‘,‘uglify‘,‘watch‘]);//先进行语法检查,如果没有问题,再合并,再压缩
};

上面的注释都写的很清楚了,照着这个复制到你得Gruntfile.js里就可以了。

嗯,好累啊,博客写了一个小时了,而且研究这个grunt也花费了我好几天时间,没办法,现在不太懂nodejs啊。

正式压缩前的最后一步:新建两个文件,写入内容,这两个文件是用于css和js代码检查的配置的。大家有兴趣可以从网上查查,这里就不多说了,大家用我这个就没有问题。一个是.csslint  ,一个是.jshint

注意这两个文件是.开头的,具体为什么现在还没来得及研究,文件是text格式的,跟Gruntfile是同一级的。gruntProject他们的上一级

.csslint文件的配置:

{
    "adjoining-classes":false,
    "box-sizing":false,
    "box-model" : false,
    "compatible-vendor-prefixes": false,
    "floats":false,
    "font-sizes":false,
    "gradients":false,
    "important":false,
    "known-properties":false,
    "outline-none":false,
    "qualified-headings":false,
    "regex-selectors":false,
    "shorthand":false,
    "text-indent":false,
    "unique-headings":false,
    "universal-selector":false,
    "unqualified-attributes":false
}

.jshint文件配置

{
    "boss":false,
    "curly":true,
    "eqeqeq":true,
    "expr":true,
    "immed":true,
    "newcap":true,
    "noempty":true,
    "noarg":true,
    "undef":true,
    "regexp":true,

    "browser":true,
    "devel":true,
    "node":true
}

最终最终最终的树结构:

这时,所有的配置都完成了,我们可以进行代码的检查、合并、压缩了~~~

大家在js文件里,css文件里随便写点内容,看看能不能合并压缩成功?

命令是

grunt

然后回车。

这时,你会发现,世界就在你脚下!又会了一项技能,心里那种成就感是无法言表的。大家加油!

时间: 2024-07-29 07:22:49

配置grunt进行css、js的检查、合并和压缩的相关文章

gulp入坑系列(2)——初试JS代码合并与压缩

在上一篇里成功安装了gulp到项目中,现在来测试一下gulp的合并与压缩功能 gulp入坑系列(1)--安装gulp(传送门):http://www.cnblogs.com/YuuyaRin/p/6159809.html 在之前建立的项目中写入,在根目录新建js文件夹,并在文件夹中新建两个js文件,代码如下: index.js: var index={}; index={ test:function(argument){ console.log('test'); } } index.test()

RequireJS对文件合并与压缩实现方法

RequireJS 是一个JavaScript模块加载器.它非常适合在浏览器中使用, 它非常适合在浏览器中使用,但它也可以用在其他脚本环境, 就像 Rhino and Node. 使用RequireJS加载模块化脚本将提高代码的加载速度和质量. 本文为大家讲解的是requireJS对文件合并与压缩的实现方法,感兴趣的同学参考下. RequireJS提供了一个打包与压缩工具r.js,r.js的压缩工具使用UglifyJS进行压缩的或Closure Compiler.r.js下载 requireJS

requireJS对文件合并与压缩(二)

requireJS对文件合并与压缩 RequireJS提供了一个打包与压缩工具r.js,r.js的压缩工具使用UglifyJS进行压缩的或Closure Compiler.r.js下载 requireJS对互相依赖模块进行合并与压缩,可以对JS,CSS压缩,甚至可以对整个项目进行打包.r.js是基于nodeJS的,所以本机电脑上需要有node环境. 下面还是来看看我整个项目结构吧,如下: 现在是这样的,app/a.js,app/b.js,app/c.js,app/d.js,有依赖关系,分别是a依

grunt配置太复杂?使用Qbuild进行文件合并、压缩、格式化等处理

上次简单介绍了下Qbuild的特点和配置,其实实现一个自动化工具并不复杂,往简单里说,无非就是筛选文件和处理文件.但Qbuild的源码也并不少,还是做了不少工作的. 1. 引入了插件机制.在Qbuild中称作模块,分为任务处理模块(如合并.压缩等处理)和文本处理模块(如内容添加和替换等处理),一个任务处理模块可以有多个文本处理模块.任务和文本处理模块均可以按指定的顺序执行,可以指定要执行的模块.每个任务的配置可以继承或覆盖全局配置,既保证了简洁,也保证了灵活. 2. 文件筛选支持通配符(*和**

Grunt:多个css,js,进行单独压缩

module.exports = function (grunt) { // 构建任务配置 grunt.initConfig({ //读取package.json的内容,形成个json数据 pkg: grunt.file.readJSON('package.json'), //压缩js uglify: { //文件头部输出信息 options: { banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd

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

在Web项目中,js.css合并压缩,不仅有利于减少Http请求数量.减少宽带资源占用,还能有效的管理各种js.css的引入,使整个项目更加有序.而对于访问用户来说,其更大的好处是增加了页面的打开速度,大大提升了用户体验. 所以,互联网各类网站,会通过各种手段,对静态文件进行合并.压缩,动静分离,使用CDN加速等.以此达到网站访问速度的优化.everycoding.com官网使用的是Java语言开发.因此使用了Java 方面的第三方Jar:wro4j来压缩Js.CSS.本文主要介绍Java We

使用Tengine concat模块合并多个CSS,JS 请求

用淘宝改良的Nginx(Tengine)提供web服务 今天在本博客上顺利把Nginx换成了Tengine:并启用了动态加载模块 mod_concat,对本博客使用的知更鸟主题各个页面head模板中大量调用的多个CSS,JSS请求进行了合并,即客户端浏览器只需通过一次http请求,即可从服务器返回所需要的多个CSS,JS文件:下面是配置步骤: 编译安装Tengine 1,停止web服务,备份原来的Nginx目录(我是lnmp一键安装的,所以直接备份/usr/local/nginx目录即可) se

实际项目中,为什么多个css、js文件要实现合并与压缩?(了解了这你才算入门)

Web性能优化最佳实践中最重要的一条是减少HTTP请求.而减少HTTP请求的最主要的方式就是,合并并压缩JavaScript和CSS文件. 关于编写css时,我们应注意通过一些细节来控制css文件的大小,比如:全局样式.继承样式.缩写样式,空格.注释等:同时你也可以通过在线工具对你的css文件进行压缩,来减少css文件的大小,但压缩后的css文件在可维护性.识别性方面变的特别弱.但更复杂的情况是,如果你的页面里面引用了多个css.多个js文件时就可能处理不好. 多个css.多个js文件进行自动合

vs合并压缩css,js插件——Bundler &amp; Minifier

之前做了一个大转盘的抽奖活动,因为比较火,部分用户反馈看不到页面的情况,我怀疑js加载请求过慢导致,所以今天针对之前的一个页面进行调试优化. 首先想到的是对页面的js和css进行压缩优化,百度了下vs集成的插件,貌似没有很好的支持,自己在vs里找了一个非常满意的插件——Bundler & Minifier 这个vs插件下载地址:点我 插件功能说明: 1.合并多个css,js,html文件为一个单独的文件 2.保存源文件自动重新组合. 3.压缩css,js,html文件 等等...(其他我没用到,