Grunt安装与环境配置

Grunt 依赖 Node.js 所以在安装之前确保你安装了 Node.js。然后开始安装 Grunt
实际上,安装的并不是 Grunt,而是 Grunt-cli,也就是命令行的 Grunt,这样你就可以使用 grunt 命令来执行某个项目中的 Gruntfile.js 中定义的 task 。但是要注意,Grunt-cli 只是一个命令行工具,用来执行,而不是 Grunt 这个工具本身

项目的github地址:grunt_test

  • 1.安装node

node.js安装教程

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

npm install -g grunt-cli

  • 3.新建一个项目,名字叫grunt_test:注意,千万不要叫grunt,后面运行grunt命令的时候会出错

下面是我的项目目录


QQ截图20161222155458.png
  • 4.生成package.json,也可以手动生成这样一个文件

npm init

生成之后在里面填入以下内容


package.json.png
  • 5.安装grunt

npm install grunt --save-dev 注意查看package.json文件

grunt安装成功.png

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

  • 6.安装grunt插件

js语法检查:grunt-contrib-jshint
安装命令:npm install grunt-contrib-jshint --save-dev 下同
css语法检查:grunt-contrib-csslint
合并文件:grunt-contrib-concat
js压缩文件:grunt-contrib-uglify
css压缩文件:grunt-contrib-cssmin
image压缩文件:grunt-contrib-imagemin
html压缩文件:grunt-contrib-htmlmin
Sass\Scss 编译:grunt-contrib-sass
安装sass插件后,我运行grunt,发现报错,提示ruby没有安装,所以如果需要使用到这个插件的,要确保自己的电脑上是否有装ruby,没有的话要进行安装
sudo yum install ruby # CentOS, Fedora, 或 RHEL 系统
sudo apt-get install ruby-full # Debian 或 Ubuntu 系统
brew install ruby #苹果系统
Less 编译:grunt-contrib-less
监听文件变动:grunt-contrib-watch

建立本地服务器:grunt-contrib-connect

上面这些插件都安装好后,注意看package.json文件中的内容


grunt插件安装成功.png
  • 7.配置Gruntfile.js

这里是对每个需要的插件进行配置


grunt.initConfig.png

插件太多了,挑其中一个(uglify,用于js压缩)进行详细说明


grunt-contrib-uglify.png

grunt是任务机制,我在这里给定了combine、compress、fileCompress三个任务,执行grunt时会按顺序执行三个任务

uglify:{    
    options:{        
        sourceMap: false,        
        stripBanners: true,        
        //压缩后的文件注释信息        
        banner :'/*! <%=pkg.name%>-<%=pkg.version%>.js <%= grunt.template.today("yyyy-mm-dd") %> */\n',        
        footer:'\n/*!修改于<%= grunt.template.today("yyyy-mm-dd") %>  */'    
    },    
    combine: {        
        files: {           
             'build/static/js/compress-<%= pkg.name %>-<%= pkg.version %>.min.js': ['dev/static/js/*.common.js'],            
            'build/static/js/compress.common.min.js': ['dev/static/js/*/*.common.js']        
        }    
    },    
    compress:{        
        options:{            
            report:"min",
        },        
        files:[{                
                expand:true,                
                cwd:'dev/static/js',                
                src:['*.js','!*.min.js','!*.common.js'],                
                dest:'build/static/js',                
                ext:'.min.js'           
        }]    
    },    
    fileCompress:{        
        options:{                 
        },        
        files:[{                
            expand:true,                
            cwd:'dev/static/js',                
            src:['**/*.js','!**/*.min.js','!**/*.common.js'],                
            dest:'build/static/js/',                
            ext:'.min.js'            
        }]    
    }
},

uglify:combine 用来合并文件
uglify:compress用来压缩文件
uglify:fileCompress也是用来压缩文件
下面两个的区别在于 files中的src:*/.js用来匹配所有的js,注意,输出的时候会保留目录层次,如果是合并到一个文件中,就把dest写成

dest: 'build/static/js/common.js',并且不写ext就可以

grunt配置总体图

grunt配置一览图.png

最后一行代码是注册任务,当然,除了default,我们也可以注册到别的Task上去,比如grunt.registerTask('compress', ['uglify:build']);
如果想要执行这个 task,我们就不能只输入 grunt 命令了,我们需要输入 grunt compress命令来执行这条 task,而这条 task 的任务是 uglify 下面的 build 任务,也就是说,我们只会执行 uglify 里面 build 定义的任务,而不会执行 uglify 里面定义的其他任务。
这里需要注意的是,task 的命名不能与后面的任务配置同名,也就是说这里的 compress 不能命名成 uglify,这样会报错或者产生意外情况

  • 8.运行查看效果

在grunt_test目录下,运行grunt,我现在是默认执行uncss和htmlmin

grunt_done.png

详细代码放在github上面了,链接地址:grunt_test

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270

推荐阅读更多精彩内容

  • 快速入门 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器。Gru...
  • 对网站资源进行优化,并使用不同浏览器测试并不是网站设计过程中最有意思的部分,但是这个过程中的很多重复的任务能够使用...
    懵逼js阅读 1,026评论 0 8
  • gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简单,学...
    依依玖玥阅读 3,123评论 7 55
  • gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简单,学...
    井皮皮阅读 1,274评论 0 10
  • UIEdgeInsets 内嵌 UIOffset 偏移 Value 转换 (拓展) 初始化 各种结构体 转化 NS...
    居然是村长阅读 841评论 1 1