2019独角兽企业重金招聘Python工程师标准>>>

一、grunt简介

grunt是什么?

grunt是Javascript世界的构建工具,我们的项目在创建初期,会很小,但经过很多版本的迭代,越来越大,CSS和JS都不太好管理了,这时我们需要工具来帮助我们管理,grunt就是做这个的。它主要的工具就是编译、压缩、单元测试等,以减少我们的工作量。

grunt已有很多可供我们使用的插件,帮助我们实现各种工业自动化,那如何使用grunt呢?

二、安装grunt

grunt和其插件都是通过npm安装的,所以,系统中必须安装npm,npm是NodeJS的包管理器。

liuzhendeMacBook-Air:gruntTest liuzhen$ npm -v
2.14.12

安装grunt之前必须先将grunt-cli安装到全局中(我这里使用了sudo命令来安装)

liuzhendeMacBook-Air:gruntTest liuzhen$ sudo npm install -g grunt-cli
Password:
npm WARN deprecated lodash@2.4.2: lodash@<3.0.0 is no longer maintained. Upgrade to lodash@^4.0.0
/usr/local/bin/grunt -> /usr/local/lib/node_modules/grunt-cli/bin/grunt
grunt-cli@0.1.13 /usr/local/lib/node_modules/grunt-cli
├── resolve@0.3.1
├── nopt@1.0.10 (abbrev@1.0.7)
└── findup-sync@0.1.3 (lodash@2.4.2, glob@3.2.11)
liuzhendeMacBook-Air:gruntTest liuzhen$

安装好grunt-cli并不是安装了grunt,grunt-cli的作用就是调用与grunfile同目录的grunt,这样做的好处就是不同的项目里可以存放不同版本的grunt。

三、package.json和gruntfile

在项目中安装grunt之前,一般都需要两个文件,package.json和gruntfile

package.json:

此文件被npm用于存储项目的元数据,以便将此项目发布为npm模块进入项目目录,使用npm init命令来创建一   个基本的package.json,在创建完gruntfile之后,就可以在项目目录中使用

sudo npm install grunt --save-dev

来安装项目grunt,也可以使用

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

来安装grunt插件

gruntfile:

此文件可被定义为gruntfile.js或者gruntfile.coffee,用来配置或定义任务(task),并加载grunt插件。

一般它可以由以下几个部分组成:

1.“wrapper”函数,它包含整个grunt配置信息

module.exports = function(grunt) {}

在这个函数中初始化configuration对象

grunt.initConfig({});

接下来就可以从package.json中读取配置信息,并存入pkg属性中

pkg:grunt.file.readJSON('package.json')

好了,到目前为止我们可以看到如下的代码:

module.exports = function(grunt) {grunt.initConfig({pkg: grunt.file.readJSON('package.json')});
}

接下来,我们就可以为每个任务定义相应的配置。

2.项目与任务配置

首先,我们来配置concat,也就是文件合并任务,如下代码:

concat: {options: {//定义一个用于插入合并输出文件之间的字符separator: ';';},dist: {//将要被合并的文件src: ['src/**/*.js'],//合并后的JS文件的存放位置dest: 'dist/<%= pkg.name %>.js'}
}

接下来,我们配置uglify插件,也就是文件压缩

uglify: {options: {//此处定义的banner注释将插入到输出文件的顶部banner: '/* <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n'},dist: {files: {'dist/<%= pkg.name %>.min.js': ['<%= concat.dist.dest %>']}}
}

QUnit插件用于测试文件,只要提供文件位置即可

qunit: {files: ['test/**/*.html']
},

JShint插件用于检查JS代码的合法性,配置也很简单

jshint: {//定义需要检查的文件的位置files: ['gruntfile.js', 'src/**/*.js', 'test/**/*.js'],//JSHint默认配置options: {globals: {jQuery: true,console: true,module: true}}
}

最后,来配置watch插件,它是用来监视当前文件变化,如果有变化,则grunt会自动执行代码检查

watch: {files: ['<%= jshint.files %>'],tasks: ['jshint', 'qunit']
}

3.加载grunt插件和任务

grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-qunit');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-concat');

以上的grunt插件需要通过npm进行安装,如以下代码:

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

4.自定义任务

最后,我们需要设置task,重要的是default任务:

//在命令行输入“grunt test”,test task就会被执行
grunt.registerTask('test', ['jshint', 'qunit']);
//在命令行上输入“grunt”,就会被执行的default task
grunt.resisterTask('default', ['jshint', 'qunit', 'concat', 'uglify']);

下面,是最终完成的gruntfile文件代码:

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']},//JS代码检查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-uglify');grunt.loadNpmTasks('grunt-contrib-jshint');grunt.loadNpmTasks('grunt-contrib-qunit');grunt.loadNpmTasks('grunt-contrib-watch');grunt.loadNpmTasks('grunt-contrib-concat');//设置任务grunt.registerTask('test', ['jshint', 'qunit']);grunt.registerTask('default', ['jshint', 'qunit', 'concat', 'uglify']);
};

未完,待续。。。

转载于:https://my.oschina.net/u/2399867/blog/614622

Grunt安装与入门相关推荐

  1. windows下nodejs express安装及入门网站,视频资料,开源项目介绍

    windows下nodejs express安装及入门网站,视频资料,开源项目介绍,pm2,supervisor,npm,Pomelo,Grunt安装使用注意事项等总结 第一步:下载安装文件 下载地址 ...

  2. Python:Scrapy的安装和入门案例

    Scrapy的安装介绍 Scrapy框架官方网址:http://doc.scrapy.org/en/latest Scrapy中文维护站点:http://scrapy-chs.readthedocs. ...

  3. TensorFlow 安装及入门

    安装 入门 TensorFlow简介 基本操作 loading lazy 安装 上TensorFlow官网按照教程安装. 入门 以下学习内容follow这篇博客 TensorFlow简介 Tensor ...

  4. Grunt安装中遇到的问题汇总

    Grunt安装中遇到的问题汇总 1.如果是windows下的dos中安装Grunt,必须以管理员身份登录(第一个坑) 登录方法是: 方法一:开始>所有程序>附件>命令提示符上右键&g ...

  5. Ubuntu 18.04 安装 redis入门使用

    Ubuntu 18.04 安装 redis入门使用 1.安装 sudo apt-get install redis-server 2.查看redis运行状态 ps -ef | grep redis 3 ...

  6. IDE之EcliPse:EcliPse软件的简介、安装、入门、使用方法之详细攻略

    IDE之EcliPse:EcliPse软件的简介.安装.入门.使用方法之详细攻略 目录 EcliPse软件的简介 Eclipse特点 EcliPse软件的安装 EcliPse软件的入门 1.快捷键集合

  7. Python:Python多种集成开发环境(IDE,编译器)的简介、安装、入门、使用方法之详细攻略

    Python:Python多种集成开发环境(IDE,编译器)的简介.安装.入门.使用方法之详细攻略 目录 Python多种编译器的简介.安装.入门.使用方法 1.Anaconda 2.ipython ...

  8. Postman:Postman简介、安装、入门使用方法详细攻略

    Postman:Postman简介.安装.入门使用方法详细攻略 目录 Postman简介 Postman安装 Postman入门 1.图文教程 1.1.get案例 1.2.post案例 1.3.get ...

  9. Ansible 安装和入门

    Ansible 安装和入门 Ansible安装 ansible的安装方法有多种 EPEL源的rpm包安装: [root@ansible ~]#yum install ansible 编译安装 yum ...

最新文章

  1. 面试题系列——OSI七层模型
  2. VTK:可视化之StreamLines
  3. C++基础 (1) 常见的易错问题
  4. JavaScript使用技巧精萃 经典代码收藏版
  5. suse安装php,SUSE下安装LAMP
  6. 为什么普通红包自己不能领_我的拼多多不能领红包是怎么回事呢?
  7. Asp.net2.0里访问Web.config的Section的示例
  8. 我为什么不喜欢网赚和SEO
  9. 《数据结构题集》2.12
  10. web前端数据可视化控件
  11. 【安全牛】一起来打靶第二周
  12. Ubuntu 20.04 更新软件依赖,源 ,删除软件三个常用指令
  13. 手机浏览器UA测试(三)
  14. appium手机APP自动化定位元素
  15. 模式识别技术漫谈(4)
  16. 人工智能基础知识总结
  17. Codechef June Challenge 2020 简要题解
  18. 阿里云王牌架构师杨曦:N多环境N多应用个性配置管理如何从混乱到简单?
  19. python英汉互译词典下载_python字典如何实现英汉互译
  20. 随机颜色十六进制(#ffffff)或rgb格式

热门文章

  1. wps计算机一级考试提纲,2017计算机一级考试大纲:WPS Office (汇总)
  2. 计算机组成与网络题库,计算机组成原理题库
  3. java 1.8 or higher_NetBeans安装提示neatbeans cannot find java 1.8 or higher
  4. Hibenate连接mysql错误_hibernate连接数据库问题,注意是表名的大小写
  5. signature=45ca03a07a2e888fb57b0d2c351110d7,Attention: Docket Number H054a Dec. 31,2004
  6. php获取所有url地址_PHP_php 获取完整url地址,主要是获取到地址栏的一些信 - phpStudy...
  7. vue获取url中ip_Kubernetes 集群中这样获取客户端真实 IP
  8. 分窗 Gram-Schmidt 高光谱降维的 水稻纹枯病检测
  9. C++函数参数传递--值传递和地址传递
  10. 3天,我用Python手撕了一个深度学习框架!