本篇文章由:http://xinpure.com/grunt-quick-note/

http://www.gruntjs.net/getting-started Grunt中文网

安装 Grunt 命令行

npm install -g grunt-cli

注意,安装grunt-cli并不等于安装了 Grunt!Grunt CLI的任务很简单:调用与Gruntfile在同一目录中 Grunt。这样带来的好处是,允许你在同一个系统上同时安装多个版本的 Grunt。

Grunt 会在具体的工作目录中进行安装

添加 Gruntfile.js/Gruntfile.coffee

Grunt 官方案例:

module.exports = function(grunt) {

    grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
concat: {
options: {
separator: ';'
},
dist: {
src: ['src/**/*.js'],
dest: 'dist/<%= pkg.name %>.js'
}
},
uglify: {
options: {
banner: '/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n'
},
dist: {
files: {
'dist/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>']
}
}
},
qunit: {
files: ['test/**/*.html']
},
jshint: {
files: ['Gruntfile.js', 'src/**/*.js', 'test/**/*.js'],
options: {
//这里是覆盖JSHint默认配置的选项
globals: {
jQuery: true,
console: true,
module: true,
document: true
}
}
},
watch: {
files: ['<%= jshint.files %>'],
tasks: ['jshint', 'qunit']
}
}); grunt.loadNpmTasks('grunt-contrib-concat'); //文件合并模块
grunt.loadNpmTasks('grunt-contrib-uglify'); //文件压缩模块
grunt.loadNpmTasks('grunt-contrib-qunit'); //文件测试模块
grunt.loadNpmTasks('grunt-contrib-jshint'); //文件检测模块
grunt.loadNpmTasks('grunt-contrib-watch'); //文件监听模块 grunt.registerTask('test', ['jshint', 'qunit']); //grunt test命令 执行此任务 grunt.registerTask('default', ['jshint', 'qunit', 'concat', 'uglify']); //grunt命令,执行的默认任务 };

根据具体的工作目录,对以上配置进行调整(主要就是修改文件路径),按需求调整 grunt 任务。

添加 package.json

方式一:手动创建 package.json 文件

{
"name": "my-project-name",
"version": "0.1.0",
"devDependencies": {
"grunt": "^0.4.5",
"grunt-contrib-concat": "^0.5.1",
"grunt-contrib-jshint": "^0.11.2",
"grunt-contrib-qunit": "^0.7.0",
"grunt-contrib-uglify": "^0.9.1",
"grunt-contrib-watch": "^0.6.1"
}
}

可通过 npm install 命令,直接安装 devDependencies 中的所有模块

方式二:使用 npm init 创建(步骤略繁琐,但自我感觉思路更清晰)

此命令会创建一个基本的 package.json 文件(一种命令行的配置方式)

input:

npm init

output:

name: (grunt_test)
version: (1.0.0)
description: This is grunt test
entry point: (Gruntfile.js)
test command: grunt
git repository:
keywords: test
author: xinpureZhu
license: (ISC)
About to write to /Project/grunt_test/package.json: {
"name": "grunt_test",
"version": "1.0.0",
"description": "This is grunt test",
"main": "Gruntfile.js",
"scripts": {
"test": "grunt"
},
"keywords": [
"test"
],
"author": "xinpureZhu",
"license": "ISC"
}

这样 package.json 文件就创建好了,接下来就是一个一个模块的安装(相对方式一的一次性安装,略麻烦的地方)

input:

npm install grunt --save-dev

npm install grunt-contrib-uglify --save-dev

npm install grunt-contrib-jshint --save-dev

npm install grunt-contrib-qunit --save-dev

npm install grunt-contrib-watch --save-dev

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

npm install <module> --save-dev 在安装模块的同时,还会自动将其添加到 package.json 文件的 devDependencies 配置段中

开始使用 Grunt

package.jsonGruntfile 都必须存放在项目的根目录下

执行 grunt 命令,就会执行 Gruntfile 文件里配置的 default 任务

使用过程中可能会存在 warnings, 可以使用 grunt --force 忽略这些警告。

在写项目的过程中,可以执行 grunt watch 监听文件,当文件被修改时,自动执行 文件合并、文件压缩等操作(按需求配置 watch tasks)

Grunt快速使用笔记的更多相关文章

  1. Knockout.js快速学习笔记

    原创纯手写快速学习笔记(对官方文档的二手理解),更推荐有时间的话读官方文档 框架简介(Knockout版本:3.4.1 ) Knockout(以下简称KO)是一个MVVM(Model-View-Vie ...

  2. Angular快速学习笔记(2) -- 架构

    0. angular 与angular js angular 1.0 google改名为Angular js 新版本的,2.0以上的,继续叫angular,但是除了名字还叫angular,已经是一个全 ...

  3. Angular 快速学习笔记(1) -- 官方示例要点

    创建组件 ng generate component heroes {{ hero.name }} {{}}语法绑定数据 管道pipe 格式化数据 <h2>{{ hero.name | u ...

  4. C#快速入门笔记(1)——基础语法

    C#快速入门笔记(1)——基础语法 总体框架:

  5. keras搭建神经网络快速入门笔记

    之前学习了tensorflow2.0的小伙伴可能会遇到一些问题,就是在读论文中的代码和一些实战项目往往使用keras+tensorflow1.0搭建, 所以本次和大家一起分享keras如何搭建神经网络 ...

  6. grunt快速入门

    快速入门 Grunt和 Grunt 插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器. Grunt 0.4.x 必须配合Node.js >= 0.8.0版本使用.:奇数版本 ...

  7. Pandas快速入门笔记

    我正以Python作为突破口,入门机器学习相关知识.出于机器学习实践过程中的需要,我快速了解了一下提供了类似关系型或标签型数据结构的Pandas的使用方法.下面记录相关学习笔记. 数据结构 Panda ...

  8. NumPy快速入门笔记

    我正以Python作为突破口,入门机器学习相关知识.出于机器学习实践过程中的需要,我快速了解了一下NumPy这个科学计算库的使用方法.下面记录相关学习笔记. 简介 NumPy是一个科学计算库.结合Py ...

  9. Spring Boot 快速入门笔记

    Spirng boot笔记 简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发 ...

随机推荐

  1. [BZOJ4004][JLOI2015]装备购买(贪心+线性基)

    求最小权极大线性无关组. 先将所有向量按权值排序,从小到大依次判断,若能被前面已选向量线性表出则不选,这样一定最优. 据说是用拟阵来证明,但感性理解一下感觉比较显然,首先这样个数一定是最多的,其次对于 ...

  2. [CODE FESTIVAL 2016]Distance Pairs

    题意:有一个未知的边权为$1$的图,给定所有点到$1$的最短路$a_i$和到$2$的最短路$b_i$,问是否存在这样的图,如果存在,问图中最少有多少条边 先考虑$a_i$,有$a_1=0,a_i\ne ...

  3. [POJ3728]The merchant

    题目大意: 给你一棵n个结点的带权树,有q组询问,问你从u到v的路径上最大值与最小值的差(最大值在最小值后面). 思路: 首先考虑路径上合并两个子路径u->t和t->v时的情况. 假设我们 ...

  4. Elasticsearch-Kibana 5.5.1插件安装

    说明:比如Elasticsearch的版本和Kibana的版本保持一致,方便排查问题.一切的安装的运行建议不要用root权限,最好是当前用户下的权限.Kibana版本变化有点快,不同的版本有不同的配置 ...

  5. rocketmq持久化方式

    推荐看下RocketMQ,使用文件做持久化, 并支持分布式事务(虽然可能造成较多的写脏), 异步刷盘,内存预分配, 高可用采用了同步双写及异步复制的方式, 通信是用netty做的,基本上所有耗时的操作 ...

  6. 性能问题: SQL*Net message from client 等待时间太长

    今天我终于自己遇到了这个问题, PO form 打不开了, 看了下 trace 发现 SQL*Net message from client 等待时间太长. 但是这不可能是网络问题, 这个环境是在我电 ...

  7. 项目中集成Easyui-Tree,可拖拽更新节点

    由于公司架构较旧,使用的jdk版本为1.4,页面上也没有el表达式. Html <ul class="easyui-tree" id="data"> ...

  8. LaTex:图片排版

    一般支持三种格式的图片排版 %% if you use PostScript figures in your article %% use the graphics package for simpl ...

  9. Oracle之数据库安全

    密码破解,大部分其实是通过枚举的方式,列出可能的密码,然后逐个尝试,直到找到真正的密码,有时也叫暴力破解.接下来,我们将举几个密码破解的例子. n  密码破解例1--- OrakelCrackert ...

  10. 模拟源码深入理解Vue数据驱动原理(2)

    我们说到如果监听的属性是个对象呢?那么这个对象中的其他属性岂不就是监听不了了吗?如下: 倘若user中的name.age属性变化,如何知道它们变化了呢?今儿,就来解决这一问题. 通过走读Vue源码,发 ...