前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Grunt快速入门

Grunt快速入门

作者头像
用户2936342
发布于 2018-08-27 07:30:32
发布于 2018-08-27 07:30:32
65900
代码可运行
举报
文章被收录于专栏:nummynummy
运行总次数:0
代码可运行

Grunt是基于JavaScript的命令行构建工具,它可以帮助开发者们自动化重复性的工作。你可以把它看成是JavaScript下的Make或者Ant。它可以完成诸如精简、编译、单元测试、lint检查等工作。

Grunt的三大主要组成部分:

  • Grunt CLI
  • Grunt Task Runner
  • Grunt Plugins

Grunt CLI

安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install grunt-cli -g

上面的命令将全局安装 grunt-cli 包,这样在任何目录下都可以调用grunt命令。Grunt CLI不包括grunt task runner。

要使用 grunt task runner,我们需要将其作为应用的开发依赖安装。grunt和grunt-cli的分离确保每个团队的成员使用同一版本的grunt task runner。

Grunt Task Runner

grunt命令会调用Grunt task runner。我们需要将其作为应用的开发依赖安装。让我们先开一个目录,放置我们的博客应用示例。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir blog
cd blog

上面已经提到,Grunt要作为应用的开发依赖安装。所以我们需要创建一个定义应用元信息的package.json文件。运行npm init命令,回答一些问题即可创建package.json文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ npm init
name: (blog) 
version: (0.0.0) 
description: My awesome blog
entry point: (index.js) 
test command: 
git repository: 
keywords: 
author: 
license: (BSD-2-Clause) 
About to write to /Users/shekhargulati/blog/package.json:
{
  "name": "blog",
  "version": "0.0.0",
  "description": "My awesome blog",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "BSD-2-Clause"
}
Is this ok? (yes) 

完成这一步之后,init命令会为我们创建 package.json 文件。由于我们不需要 main、scripts、author和license这些项目,我们可以删掉它们。现在我们有了一个最简单的 package.json 文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "name": "blog",
  "version": "0.0.0",
  "description": "My awesome blog"
}

运行下面的命令将Grunt安装到本地:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install grunt --save-dev

上面的命令将安装所需的依赖,同时也会更新 package.json。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{
  "name": "blog",
  "version": "0.0.0",
  "description": "My awesome blog",
  "devDependencies": {
    "grunt": "~0.4.1"
  }
}

Grunt Plugins

Grunt有一个良好的插件体系,我们需要的大多数任务都有相应的插件加以处理。Grunt的插件可以用npm安装。这里我们将使用插件——grunt-contrib-uglify。

Gruntfile

现在我们该告诉 GruntJS该做哪些任务了。如果我们在blog目录中运行grunt命令,我们会看到如下的错误信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ grunt
A valid Gruntfile could not be found. Please see the getting started guide for
more information on how to configure grunt: http://gruntjs.com/getting-started
Fatal error: Unable to find Gruntfile.

为了使用Grunt,我们需要创建一个名为Gruntfile.js的文件。Gruntfile指定grunt需要执行的任务。这个文件包含了构建脚本。

在blog目录下创建一个新文件,起名为 Gruntfile.js,加入下列代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = function(grunt){

};

这是我们开始使用Gruntfile所需的样板。

接着我们需要配置grunt需要执行的任务。我们调用grunt的initConfig函数,将配置对象传递给它。目前,配置对象是空白的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = function(grunt){
    grunt.initConfig({

    })  
};
压缩JS

我们要执行的第一项任务是压缩应用中的javascript文件。在blog目录中创建一个js文件夹,然后创建一个名为app.js的新文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ mkdir js
$ cd js
$ touch app.js

在文本编辑器中打开app.js,在其中加入如下内容。app.js文件有两个简单的方法hello和bye。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function hello(name){
    return "Hello, " + name;
}
function bye(name){
    return "Bye, " + name;
}

现在我们在grunt配置对象中添加uglify任务。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = function(grunt) {
  grunt.initConfig({
    uglify: {
      build: {
        src: ['js/app.js'],
        dest: 'js/app.min.js'
      }
    }
  });
  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.registerTask('default', ['uglify']);
};

上面的代码做了这些事:

  • 我们配置了uglify任务,指定了源文件和目标文件。
  • 接着我们加载了grunt-contrib-uglify插件。在运行grunt命令之前,确保插件已经安装。所有的grunt插件都可以通过npm安装。
  • 最后,我们将这个uglify任务注册为我们的默认任务。当我们未指定任务名称而直接运行grunt命令的时候,Grunt将调用默认任务。

特定项目的任务不必在Gruntfile中定义。他们可以定义在外部.js文件中,并通过grunt.loadTasks 方法加载。

如果我们运行grunt命令,我们会碰到下面的信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>> Local Npm module "grunt-contrib-uglify" not found. Is it installed?
Warning: Task "uglify" not found. Use --force to continue.

Aborted due to warnings.

运行下面的命令安装grunt-contrib-uglify插件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install grunt-contrib-uglify --save-dev

然后再次运行grunt命令,这次我们将看到成功的信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ grunt
Running "uglify:build" (uglify) task
File "js/app.min.js" created.
Done, without errors.

它成功地创建了app.min.js文件。app.min.js如下所示,所有的空格被删除了,函数的参数被重构为单一字母,整个文件被压缩成一行。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function hello(a){return"Hello, "+a}function bye(a){return"Bye, "+a}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.11.28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
菜鸟进阶——grunt
http://yujiangshui.com/grunt-basic-tutorial/
超然
2018/08/03
1.5K0
菜鸟进阶——grunt
前端自动化构建工具Grunt
Grunt 是一个基于任务的JavaScript工程命令行构建工具。 Grunt和Grunt插件,是通过npm安装并管理的,npm是Node.js的包管理器。 了解Grunt前,首先要准备两件事: 1、了解npm(Node Package Manager):npm是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。 2、安装node:进入nodejs官网(https://nodejs.org/),单击INSTALL下载node安装包,默认安装。安装完成后,进入对应目录,会发现nodejs文件夹下面有npm,直接用npm安装相环境既可。
奋飛
2019/08/15
8140
grunt入门笔记
想一想如果没有这个工具,我们需要手动新建一个压缩代码后的文件夹,每次修改原始文件,都要手动压缩一下,再保存到压缩后的文件夹,想想都要疯掉。所以,grunt前端必不可少。
卢衍飞
2022/11/12
1.2K0
grunt入门笔记
前端自动化工具 -- Grunt 使用简介
grunt是基于nodejs的,所以需要一个 nodejs 环境,未了解的可以 来这看看
书童小二
2018/09/03
2K0
前端自动化工具 -- Grunt 使用简介
grunt
npm install -g grunt-cli //全局安装grunt npm init -y //初始化package.json npm install grunt --save-dev //在项目中安装grunt grunt --help //查看更多信息 grunt 安装完毕
河湾欢儿
2018/09/06
6860
PHP 7 CSS与JavaScript优化
性能在Web应用程序中起着至关重要的作用,甚至谷歌也很在意其查询性能。不要因为一个几KB的文件只需要1毫秒的下载时间就不去重视,因为涉及性能时每个毫秒都需要去关注。最好能优化、压缩和缓存一切。
博文视点Broadview
2020/06/11
3.2K0
Grunt常用插件及示例说明
示例:将1.html文件中的var requestAddress = "";替换为var requestAddress = "http://blog.csdn.net/ligang2585116";
奋飛
2019/08/15
1.2K0
初识grunt
很早就听人提过grunt,我的概念里一直认为它是一个类似java界maven的东西,帮助开发人员从频繁地编译、配置管理等工作中解放出来。今天比较有空,就尝试使用一下这个东西,看看它是不是真的那么好用。 首先安装nodejs #安装Homebrew ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" #安装nodejs brew install node #安装grunt-cli npm install -g
jeremyxu
2018/05/09
8430
初探Grunt
最近打算学习一些web编程的知识,今天学习了Grunt这个工具的用法,这里简要地对学习的知识点进行个总结。
王云峰
2019/12/25
8900
ASP.NET5之客户端开发:Grunt和Gulp构建工具在Visual Studio 2015中的高效的应用Grunt和Gulp使用Grunt准备项目配置NPM配置Grunt集成起来监测文件变化与V
Grunt和Gulp是Javascript世界里的用来做自动压缩、Typescript编译、代码质量lint工具、css预处理器的构建工具,它帮助开发者处理客户端开发中的一些烦操重复性的工作。Grunt和Gulp都在Visual studio 2015中得到支持。ASP.NET 项目模板默认使用Gulp。 Grunt和Gulp Grunt和Gulp有什么区别?Gulp虽然是稍微晚一点登场的,但是它因crisp performance和优雅的语法受到欢迎。与Grunt不同,Grunt往往在硬盘上是读写文件,G
小白哥哥
2018/03/07
3.1K0
ASP.NET5之客户端开发:Grunt和Gulp构建工具在Visual Studio 2015中的高效的应用Grunt和Gulp使用Grunt准备项目配置NPM配置Grunt集成起来监测文件变化与V
grunt任务之seajs模块打包
grunt与seajs          grunt是前端流行的自定义任务的脚手架工具,我们可以使用grunt来为我们做一些重复度很高的事情,如压缩,合并,js语法检查等。通过定义grunt的配置文件Gruntfile.js,配置并注册grunt的任务,最终我们可以通过命令行来执行任务。          seajs主要用于模块化,通过define定义一个模块,可以通过require加载模块,exports导出模块。具体的seajs实现可通过本博客的系列博文--Seajs源码解析系列来进一步了解。     
欲休
2018/03/15
2.2K0
grunt任务之seajs模块打包
grunt集成Babel 实现ES6转ES5
背景:原来前端项目使用ES5开发,后来有个小伙伴使用了ES6的高级语言,导致项目无法通过grunt压缩。
全栈程序员站长
2022/09/28
6350
grunt集成Babel 实现ES6转ES5
剖析Grunt任务配置
A. 通过npm init在项目根目录下生成package.json; B. 通过npm install grunt --save-dev 安装grunt依赖; C. 项目根目录下手动创建文件夹Gruntfile.js
奋飛
2019/08/15
8440
JavaScript全栈开发-工具篇(上)
一、运行环境 1. Node.js 2. Chrome 3. 其它浏览器 二、开发工具 1. WebStorm 1.1 功能特性 1.2 小技巧 1.3 实用快捷键 1.4 插件支持 2. Sublime Text 2.1 功能特性 2.2 小技巧 2.3 实用快捷键 2.4 插件支持 3. HBuilder 3.1 功能特性 3.2 小技巧 3.3 实用快捷键 3.4 插件支持 4. 开发工具小结 三、构建工具 1. Grunt 1.1 Grunt安装 1.2 Grunt配置文件 1.3 Gru
腾讯NEXT学位
2018/10/12
2K0
JavaScript全栈开发-工具篇(上)
Grunt配置及使用
1、node环境安装 http://www.runoob.com/nodejs/nodejs-install-setup.html 2、grunt安装 package.json文件 http://blog.csdn.net/zmrdlb/article/details/53190696 { "name": "payment", "version": "0.0.1", "author": "zhangxu", "devDependencies": { "grunt": "^0.4.5"
meteorzx
2018/03/28
1.5K18
ASP.NET 5系列教程 (五):在Visual Studio 2015中使用Grunt、Bower开发Web程序
基于Visual Studio 2015,你可以: 方便的管理前端包,如jQuery, Bootstrap, 或Angular。 自动运行任务,如LESS、JavaScript压缩、JSLint、JavaScript单元测试等。 方便的获得Web开发者生态圈的工具包。 为了实现这些场景,Visual Studio 2015已经内置了一些流行的第三方工具包: Bower:Web包管理器,Bower可以帮你安装前端包,包括JavaScript、CSS类库。对于服务器端包,请通过NuGet包管理。 Grunt a
葡萄城控件
2018/01/10
3.7K0
ASP.NET 5系列教程 (五):在Visual Studio 2015中使用Grunt、Bower开发Web程序
Express开发实战
今天为了制作compass-style.org国内网站,决定使用nodejs来开发,express作为nodeJs 快速开发框架成为不二选择。半年前就学过nodeJs,express,到现在就来一次实战吧,实战过程果然会遇到许多问题,但解决问题的过程就是一种历练,更加坚实了我使用nodeJs的决心
用户1065635
2019/03/21
1.6K0
Gulp开发教程(翻译)
对网站资源进行优化,并使用不同浏览器测试并不是网站设计过程中最有意思的部分,但是这个过程中的很多重复的任务能够使用正确的工具自动完成,从而使效率大大提高,这是让很多开发者觉得有趣的地方。
李维亮
2021/07/09
8950
Gulp开发教程(翻译)
Yeoman 生成的 Angular 脚手架详解
Yeoman 生成的 Angular 脚手架提供了 27 个任务配置和 3 个自定义任务。这三个自定义任务分贝为:
kl博主
2023/11/17
2390
Grunt插件快速开发笔记
最近写了两个Grunt插件(grunt-htmlstamp 和 grunt-file-modify),已经用在自己的项目中,用得很开心。本文便是记录了Grunt插件开发的一些关键的点,作为笔记,比较简
IMWeb前端团队
2017/12/29
9340
Grunt插件快速开发笔记
相关推荐
菜鸟进阶——grunt
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验