Grunt 和 Grunt 的插件都是经过 Node.js 的包管理器 npm 来安装和管理的。为了方便使用 Grunt ,你应该在全局范围内安装 Grunt 的命令行接口(CLI)。要作到这一点,你可能须要使用 sudo (OS X,*nix,BSD 等平台中)权限或者做为超级管理员( Windows 平台)来运行 shell 命令。html
npm install -g grunt-cli
使用全局安装以后,能够在任何一个目录中运行 grunt 命令。node
每次运行 grunt 时,它都会使用 node 的 require() 系统查找本地已安装好的 grunt。在本地装好 Grunt 以后,运行 gurnt 命令时,CLI 就会加载这个本地安装好的 Grunt 库,而后应用你项目中的 Gruntfile 中的配置(这个文件用于配置项目中使用的任务),并执行你所指定的全部任务。而 Grunt 库的安装则依赖 package.json 文件。git
假设已经安装好 Grunt CLI 而且项目也已经使用一个 package.json 和一个 Gruntfile 文件配置好了,那么接下来用 Grunt 进行工做就很是容易了:github
最简单的配置须要两个文件:package.json
shell 和
Gruntfile
package.json:这个文件被用来存储已经做为 npm 模块发布的项目元数据(也就是依赖模块)。你将在这个文件中列出你的项目所依赖的Grunt(一般咱们在这里配置Grunt版本)和Grunt插件(相应版本的插件)。使用命令 npm install
安装依赖模块。npm
Gruntfile:一般这个文件被命名为Gruntfile.js或者Gruntfile.coffee,它用于配置或者定义Grunt任务和加载Grunt插件。json
package.json
package.json
与 Gruntfile
相邻,都归属在项目的根目录中。在目录中运行 npm install
安装须要的依赖模块。其建立方式有几种:windows
grunt-init
命令建立 Grunt 模板时,会自动为项目建立一个 package.json
文件。
npm init
会自动建立一个基本的 package.json
文件。
- 新建一个文件,重命名为
package.json
。
一个 package.json
文件示例:数组
{
"name": "my-project-name", // 项目名称
"version": "0.1.0", // 项目版本
"devDependencies": { // 项目依赖
"grunt": "~0.4.1", // Grunt库
"grunt-contrib-jshint": "~0.6.0", //grunt中的工具
"grunt-contrib-nodeunit": "~0.2.0", //grunt中的工具
"grunt-contrib-uglify": "~0.2.2" //grunt中的工具,能够按照这种方式在 dependencies 中添加本身想要的工具
}
}
Gruntfile
Gruntfile.js
和 Gruntfile.coffee
文件都是归属于项目根目录中的一个有效的 JavaScript 或者 CoffeeScript 文件。
一个 Gruntfile 由下面几部分组成:app
- “wrapper” 函数,一个包装函数
- 项目和任务配置
- 加载的 Grunt 插件和任务
- 自定义任务
wrapper 函数
每一个 Gruntfile 都使用这个基本格式,同时全部的 Grunt 戴玛都必须指点在这个函数里面:
module.exports=function(){
//在这里添加 Grunt 相关
}
项目和任务配置
一般 Grunt 任务所依赖的配置素据都被定义在一个对象中,而这个对象将会被传递给 grunt.initConfig
方法。
// 项目配置
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n'
},
build: {
src: 'src/<%=pkg.name %>.js',
dest: 'build/<%= pkg.name %>.min.js'
}
}
});
在上面的代码中,grunt.file.readJSON('package.json')
会把存储在 package.json
中的 JSON 元数据导入到 Grunt 配置中。因为 <% %>
模板字符串能够引用任意的配置属性,所以能够经过这种方式来制定诸如文件路径和文件列表类型的配置数据。
与大多数的任务同样, grunt-contrib-uglify 插件的 uglify
任务要求他的配置被指定在一个同名属性中。在这个例子中,咱们指定了一个 banner
选项,用于在文件顶部生成一个注释。紧接着是一个名为 build
的 uglify 目标,用于将一个js文件压缩为一个目标文件,好比:将 src 目录中的 jQuery-1.9.0.js
压缩成 jQuery-1.9.0.min.js
,而后存储到 dest 目录中。
插件通常都托管在 github 上,其使用方法都会有说明。好比 grunt-contrib-uglify
加载 grunt 插件和任务
只要一个插件被做为一个依赖指定在项目的 package.json
文件中,而且经过 npm install
安装好,均可以在 Gruntfile
文件中使用下面的简单命令启用.
//加载提供 "uglify" 任务的插件
grunt.loadNpmTasks("grunt-contrib-uglify");
tips: 使用 grunt --help
命令能够列出全部可用的任务
同时,你能够经过定义一个 default
任务来配置 Grunt,让他默认运行一个过着多个任务。
// 默认任务
grunt.registerTask('default', ['uglify']);
能够将你容许默认运行的任务名称以数组的形式做为参数传递。
若是你想要的任务没有对应的 Grunt 插件提供相应的功能,你能够在 Gruntfile 内定义自定义的任务:
module.exports=function(){
//一个很基础的default任务
grunt.registerTask("default","load some stuff.",function(){
grunt.log.write("Loggin some stuff……").ok();
});
};
自定义的项目特定的任务能够不定义在 Gruntfile 中;它们能够定义在一个外部 .js 文件中,而后经过 grunt.loadTasks 方法来加载。
参考自:Grunt新手教程