什么是grunt?

   Grunt是一个JavaScript任务运行器,用于自动执行频繁任务(如压缩,编译,单元测试)的工具。它使用命令行界面来运行在文件中定义的自定义任务(这个文件称为Gruntfile)。 Grunt由Ben Alman创建,用Node.js编写。它通过npm分发。现在,Grunt生态系统中有超过5,000个插件可用。

如何使用grunt?

基本概念

1.CLI(Command-line interface):Grunt的命令行界面(CLI)可以通过npm全局安装。执行grunt命令将加载并运行当前目录中本地安装的Grunt版本。因此,我们可以在不同的文件夹中维护不同版本的Grunt,并根据需要执行相对应的版本。安装grunt-cli只是将grunt命令放在系统路径中,允许它从任何目录运行。安装grunt-cli不会安装Grunt任务运行器! Grunt CLI的工作很简单:运行已经安装在Gruntfile文件目录内的Grunt版本。所以允许多个版本的Grunt同时安装在同一台机器上。

2.package.json文件:包含项目的元数据,包括名称,版本,描述,作者,许可证及其依赖项(项目所需的Grunt插件)。所有依赖项都列在dependencies或devDependencies部分中。

3.Gruntfile文件:一个名为“Gruntfile.js”或“Gruntfile.coffee”的有效JavaScript或CoffeeScript文件,其中包含用于配置任务,加载现有插件以及创建自定义任务的代码。

4.任务运行:任务是执行指定作业的模块。它们在Gruntfile中定义。 开发人员可以从现有的Grunt插件加载预定义的任务以及编写自定义代码,以根据需求定义自己的任务。一旦定义,只需执行grunt <taskname>即可从命令行(CLI)运行这些任务。如果Gruntfile中定义的<taskname>是'default',那么只需执行grunt即可。即不加参数是执行默认的任务。

安装cli

  安装命令很简单,全局安装(首先需要先安装npm到全局),直接输入:

npm install -g grunt-cli

  npm是包管理的工具,-g表示全局安装,如果直接使用npm install它会找当前目录下是否有package.json,然后在当前目录安装这个文件里面配置的相关依赖。如果使用npm install <module name> 会安装指定的模块。

建立一个package.json

  这边我首先先在E盘的目录下面新建一个gruntTest的测试文件夹:

  输入:

npm init

  接着会让你填写相关的信息,选择默认的,直接按enter下一步!

  可以见到生成了相关的文件:

安装grunt和相关插件

  安装相关的package的命令格式为:

npm install <module> --save-dev

  --save-dev的意思是把安装的module保存到package.json文件的依赖之中。

  首先需要安装grunt,安装后可以使用grunt命令来跑(因为已经安装了grunt-cli)当前目录下所安装的grunt版本。

npm install grunt --save-dev

  如果你想安装JSHint任务模块,运行npm install grunt-contrib-jshint --save-dev即可,可以按需求添加对应的任务模块(也叫插件)。

编写Gruntfile

  Gruntfile.js或Gruntfile.coffee文件是一个有效的JavaScript或CoffeeScript文件,它位于项目的根目录中,位于package.json文件旁边,做项目时应该与项目源码一起提交。

  Gruntfile.js一般由以下四部分组成

  1)wrapper“包装”函数

  2)项目和任务配置

  3)加载Grunt插件和任务

  4)自定义任务

  以下展示一份压缩的任务的Gruntfile.js的书写,

 module.exports = function(grunt) {

   // 项目配置
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
uglify: {
options: { },
build: {
src: 'js/src/vue.js',
dest: 'js/dest/vue.min.js'
}
}
}); // 加载提供'uglify'任务的插件
grunt.loadNpmTasks('grunt-contrib-uglify'); // 默认的任务
grunt.registerTask('default', ['uglify']); };

  先安装压缩的插件

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

  然后运行输入grunt,即可运行相关的默认任务,

  可以看出vue.js从源目录被压缩到对应的目标目录。

后面博客会继续学习grunt常用的相关插件。

我的grunt学习笔记的更多相关文章

  1. Grunt 学习笔记【2】---- 配置和创建任务

    本文主要讲Grunt任务配置. 说明:本文所有示例都基于Grunt 0.4.5版本. 一 说明 使用Grunt实现项目的打包等工程化工作,实际上是通过Grunt提供的机制和插件,配置一个个任务(例如: ...

  2. grunt学习笔记

    1. 在使用grunt前需要执行的几条命令和用途 npm uninstall -g grunt  删除掉全局grunt npm install -g grunt-cli 把grunt加入你的系统搜索路 ...

  3. grunt学习笔记1 理论知识

    你需要检查js语法错误,然后再去压缩js代码.如果这两步你都去手动操作,会耗费很多成本.Grunt就能让你省去这些手动操作的成本. “—save-dev”的意思是,在当前目录安装grunt的同时,顺便 ...

  4. Grunt学习笔记【8】---- grunt-angular-templates插件详解

    本文主要讲如何用Grunt打包AngularJS的模板HTML. 一 说明 AngularJS中使用单独HTML模板文件的地方非常多,例如:自定义指令.ng-include.templateUrl等. ...

  5. Grunt学习笔记【7】---- grunt-contrib-less插件详解

    本文主要讲如何使用Grunt实现less文件压缩. 一 说明 less是非常常用的样式框架之一,Grunt也提供了可以编译和打包less样式文件的插件:grunt-contrib-less. 实现原理 ...

  6. Grunt学习笔记【6】---- grunt-contrib-requirejs插件详解

    本文主要讲如何使用Grunt实现RequireJS文件压缩. 一 说明 ES6出来前,RequireJS是JavaScript模块化最常用的方式之一.对于使用RequireJS构建的项目,要实现打包压 ...

  7. Grunt学习笔记【5】---- expand使用方法

    本文主要讲expand使用方法. 当你希望处理大量的单个文件时,这里有一些附加的属性可以用来动态的构建一个文件列表.这些属性都可以用于 Compact 和 Files Array 文件映射格式. ex ...

  8. Grunt学习笔记【4】---- 通配符和模板

    本文主要讲通配符和模板的基本使用方法. 一 通配符 通常分别指定所有源文件路径是不切实际的,因此Grunt通过内置支持node-glob 和 minimatch 库来匹配文件名(又叫作globbing ...

  9. Grunt学习笔记【3】---- filter使用方式和实现原理详解

    本文主要讲配置任务中的filter,包括使用默认fs.Stats方法名和自定义过滤函数,以及filter的实现原理. 通过设置filter属性可以实现一些特殊处理逻辑.例如:要清理某个文件夹下的所有空 ...

随机推荐

  1. UML类建模(强烈推荐-思路很清晰)

    UML类建模(强烈推荐-思路很清晰) 2016年10月23日 15:17:47 mbshqqb 阅读数:2315 标签: uml面向对象设计模式 更多 个人分类: 面向对象程序设计   UML的构造快 ...

  2. mySql存储emoji表情报错(mysql incorrect string value)

    问题分析 普通的字符串或者表情都是占位3个字节,所以utf8足够用了,但是移动端的表情符号占位是4个字节,普通的utf8就不够用了,为了应对无线互联网的机遇和挑战.避免 emoji 表情符号带来的问题 ...

  3. Java知多少(36)内部类及其实例化

    在 Java 中,允许在一个类(或方法.语句块)的内部定义另一个类,称为内部类(Inner Class),有时也称为嵌套类(Nested Class). 内部类和外层封装它的类之间存在逻辑上的所属关系 ...

  4. Java如何检查端口是否被使用?

    在Java编程中,如何扫描打开的端口(是否被使用)? 以下示例显示如何通过创建 Socket 对象来检查主机上打开或正在使用的端口(相当于一个简单的端口扫描器). package com.yiibai ...

  5. excel中批量删除公式,保留数值

    excel中批量删除公式,保留数值 Sub macro1() Dim sh As Worksheet For Each sh In Sheets sh.UsedRange = sh.UsedRange ...

  6. 为什么我们做分布式使用Redis?

    绝大部分写业务的程序员,在实际开发中使用 Redis 的时候,只会 Set Value 和 Get Value 两个操作,对 Redis 整体缺乏一个认知.这里对 Redis 常见问题做一个总结,解决 ...

  7. SpringBoot------MockMvc单元测试

    1.添加测试依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www. ...

  8. System.getProperty()获取系统的配置信息

    原文地址:http://www.jsjtt.com/java/Javajichu/105.html 此处记录备用. 1. 通过System.getProperty()可以获取系统的配置信息,Syste ...

  9. php的opcache缓存扩展

    opcache (全程 zend opcache): 从php5.5开始,默认提供的php脚本缓存扩展,编译php5.5时加上参数--enable-opcache就可以编译opcache了,只是要启用 ...

  10. day_10 py

    整理代码!!2018-7-24 20:53:49 直接复制了东西: 一些的demo 重点看蓝字部分! 就是一些简单的方法 基础的而已! 2018-4-22 15:50:26 继续py 还是py好玩感觉 ...