`
zccst
  • 浏览: 3319353 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

grunt搭建项目实例+grunt.initConfig配置详解

阅读更多
作者:zccst

参考网址:
Grunt教程——初涉Grunt
http://www.w3cplus.com/tools/grunt-tutorial-start-grunt.html
Grunt教程——安装Grunt
http://www.w3cplus.com/tools/grunt-tutorial-installing-grunt.html
Grunt教程——Gurnt任务的配置
http://www.w3cplus.com/tools/grunt-tutorial-configuring-tasks.html


一、实践

实践1:最基础(能运行起来)

第一步:搭建环境,主要是nodejs, npm, grunt(grunt-cli)
$ mkdir installGrunt
$ cd installGrunt

$ npm install grunt --save-dev  #如果看到如下信息表示grunt安装成功
$ grunt --version
grunt-cli v0.1.13
grunt v0.4.5


第二步:创建 package.json

# 在项目的根目录下创建package.json文件
(1)根据grunt-init模板自动创建一个特定的package.json文件;(需要先安装 npm install -g grunt-init)
(2)在命令终端通过npm init命令自动创建一个基本的package.json文件;(亲自测试过)
(3)从官网上复制或者下载一个package.json文件;(对新手最方便)
(4)手工创建一个package.json文件;(对高手最方便)


添加依赖
(1)逐个添加,逐个执行命令 $ npm install XXX --save-dev
XXX是常用插件名,如grunt-contrib-jshint
最好是全称,不要简写。我曾试过 npm install cssmin --save-dev 生成了无用的东西。

(2)也可以一次在package.json中添加多个插件,然后一次执行命令 $ npm install
安装声明的依赖关系grunt插件同时, 在项目根目录下添加一个node_modules目录,目录中放置对应grunt插件所需的插件目录名。
注:当你给npm install添加 --save-dev标志是,一个波浪线范围将被用于你的package.json中。(建议)


第三步:创建Gruntfile.js
# 添加自己合适的gruntfile配置,运行,得出预期输出
module.exports=function(grunt){
    //任务配置
    grunt.initConfig({
    });
    //载入任务
    grunt.loadNpmTasks();
    //注册任务
    grunt.registerTask();
}
内容参见demo1

$ grunt     #

运行成功,在目标目录下创建了一个压缩后的js,引用压缩后的js,效果一样。



实践2:加上css压缩的过程

1,在package.json使用命令加一个插件
npm install grunt-contrib-cssmin --save-dev #一开始使用npm install cssmin不对,下了两个

2,在Gruntfile.js中三个部分都加入cssmin相关的命令

3,运行grunt


注:如果已经在initConfig里配置了uglify和cssmin,则不能再注册任务名为uglify和cssmin,报错如下
(node) warning: Recursive process.nextTick detected. This will break in the next version of node.
Please use setImmediate for recursive deferral(递归延迟).

解决办法:注释掉
//grunt.registerTask("uglify",['uglify']);
//grunt.registerTask("cssmin",['cssmin']);
grunt.registerTask("default",['uglify','cssmin']);//默认执行的任务

参考文档:
http://www.k68.org/?p=1232




grunt.initConfig配置详解

简单的能运行起来,到真正的能够在项目中用起来,中间还有很长的一段路要走。
那就是熟悉配置参数的含义,以能够使用较复杂的配置参数,完成工作。
之前一直对配置参数的含义一直似懂非懂,在网上搜的东西一般都是片段,说得不够完整和透彻(被这些文章害苦了,折腾了很久,始终没有完整理解),其实有三个地方非常容易能找到:

1,官网-配置任务 一节描述的很清楚,包括任务的结构和参数含义。
http://www.gruntjs.net/docs/configuring-tasks/

2,github搜对应的任务。如grunt-cmd-transport

3,github上通过seajs等推荐的链接。如:
https://github.com/seajs/seajs/issues/672








常用插件:
grunt-contrib-jshint(js语法检查)
grunt-contrib-uglify(采用UglifyJS压缩js)
grunt-contrib-concat(js合并)

grunt-contrib-cssmin(Css压缩合并)

grunt-htmlhint(html语法验查)


如果您觉得本文的内容对您的学习有所帮助,您可以微信:
分享到:
评论

相关推荐

    Grunt v1.4.1 Elasticsearch Head Files

    《Grunt v1.4.1与Elasticsearch Head集成详解》 在现代Web开发中,自动化工具扮演着至关重要的角色,它们极大地提高了开发效率。其中,Grunt作为JavaScript任务运行器,是开发者们常用的一款工具,而Elasticsearch...

    grunt-ec2:Grunt插件可以启动停止EC2实例并将其添加到负载均衡器中

    咕aw声 ...在项目的Gruntfile中,向传递给grunt.initConfig()的数据对象添加一个名为aws的部分。 grunt . initConfig ( { aws : { options : { // Task-specific options go here. } , your_

    grunt-examples:简约Grunt示例

    通过这些实例,我们可以深入理解Grunt的工作方式,掌握如何根据项目需求定制和配置任务,从而更高效地管理JavaScript项目。无论你是初学者还是经验丰富的开发者,都能从中受益匪浅,提升你的开发技能和工作效率。

    grunt-samples:使用Grunt进行构建自动化的示例JavaScript项目

    “grunt-samples”项目是一个宝贵的资源,它提供了一系列使用Grunt的实例,帮助开发者学习如何利用Grunt实现JavaScript项目的构建自动化。通过实践这些示例,你可以掌握Grunt的基本用法和常见任务配置,提高你的开发...

    prototype:为原型项目制作的简单快速的 Grunt 样板

    在这个实例中,开发者可以使用`grunt.initConfig`方法来设置任务配置,然后使用`grunt.loadNpmTasks`加载需要的插件。最后,可能会有一些自定义的任务或者默认任务通过`grunt.registerTask`注册。 总的来说,这个...

    zopfli-example:使用 Grunt Zopfli 插件的简单示例

    总结起来,"zopfli-example"是一个使用Grunt Zopfli插件的实例,展示了如何通过Grunt自动化压缩项目中的资源文件。通过这个示例,开发者可以学习到如何配置和使用Grunt Zopfli,以实现更高效的前端资源压缩,提升...

    grunt_examples:咕噜咕噜的例子

    在这个名为"grunt_examples:咕噜咕噜的例子"的项目中,我们看到了一个学习和实践`grunt`自动化的实例。 `grunt`是由Tyler Kellen创建的,它是基于Node.js的,因此需要Node.js环境才能运行。安装`grunt`首先需要在...

    learning-gruntjs:gruntjs 分步介绍

    Grunt 提供了一些高级特性,如多配置文件、多任务实例、任务链等,可以根据项目规模和复杂性灵活运用。 综上所述,GruntJS 是一个强大的工具,可以帮助开发者提高工作效率,实现前端项目的自动化。通过理解其基本...

    grunttest_deploy:[Grunt] 每次更新文件时使用 sftp 自动部署到 EC2

    在IT行业中,自动化部署是提高开发效率和保持项目持续运行的关键环节。...在实际应用中,还可以根据项目需求进一步定制Grunt配置,例如添加代码质量检查、测试、压缩等任务,以实现更全面的自动化构建。

    grunt-contrib-livereload:在浏览器中实时重新加载资产

    2. 在`grunt.initConfig()`中配置livereload任务。 3. 在需要的其他任务(如`watch`任务)中,调用`livereload`实例以启动实时刷新。 然而,鉴于该插件已不被推荐,学习现代前端构建工具的使用和配置,如Webpack或...

    learngrunt:是时候学习咕噜了!

    本文将深入探讨Grunt的使用方法,通过实例带你了解如何将它融入到你的项目中,提升开发流程。 首先,我们需要理解什么是Grunt。Grunt是由Tyler Kellen创建的一个基于任务的JavaScript项目构建工具,它允许开发者...

Global site tag (gtag.js) - Google Analytics