grunt 依赖nodejs,所有在使用前确保你安装了nodejs,然后开始执行grunt命令。

.安装node

nodejs安装教程

安装完成后在命令行,执行命令:

node  -v

出现版本信息,说明安装完成.NPM是随同nodejs一起安装的包管理工具,能解决nodejs代码部署上的很多问题:

  • 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
  • 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
  • 允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
.grunt命令行(CLI)安装在全局环境下

grunt是一套前端自动化工具,一个基于nodeJs的命令行工具,一般用于:
① 压缩文件
② 合并文件
③ 简单语法检查

对于已安装低版本,要更新最新版本需要先卸载,进行安装:

npm uninstall -g grunt

为了方便在全局安装grunt命令接口(CLI)

> npm install -g grunt-cli


该命令植入到你的系统中,允许从任意目录运行Grunt

.创建目录

在本地创建项目目录:grunt_test1

创建完成,添加package.json文件 ,也可以手动生成一个文件(npm init)

命令行执行:

cnpm install grunt --save-dev

在当前目录下安装grunt依赖。 tips:淘宝npm镜像安装:

$ npm install -g cnpm --registry=https://registry.npm.taobao.org
执行后就可以使用cnpm 代替npm

   cnpm install grunt --save-dev  执行之后,就会看到 
node_modules模块加载 及 package.json 依赖模块会存在
.插件安装

官网插件地址

这里的插件有官方及第三方提供插件,区分方式 grunt-contrib 是官方标注

  • Contrib-jshint——javascript语法错误检查;

  • Contrib-htmlmin ——压缩html代码
  • Contrib-cssmin—— 压缩css代码
  • Contrib-imagemin——压缩图片
  • Contrib-watch——实时监控文件变化、调用相应的任务重新执行;

  • Contrib-clean——清空文件、文件夹;

  • Contrib-uglify——压缩javascript代码

  • Contrib-copy——复制文件、文件夹

  • Contrib-concat——合并多个文件的代码到一个文件中

  • karma——前端自动化测试工具

先看 JS 批量压缩, 安装插件Contrib-uglify

   cnpm install grunt-contrib-uglify --save-dev

会看到该插件依赖。 同时在该目录下创建文件

Gruntfile.js

这个文件尤其关键,他一般干两件事情:
① 读取package信息
② 插件加载、注册任务,运行任务(grunt对外的接口全部写在这里面)

Gruntfile一般由四个部分组成
① 包装函数
这个包装函数没什么东西,意思就是我们所有的代码必须放到这个函数里面

module.exports = function (grunt) {
//你的代码
}

这个不用知道为什么,直接将代码放入即可

② 项目/任务配置
我们在Gruntfile一般第一个用到的就是initConfig方法配置依赖信息

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

这里的 grunt.file.readJSON就会将我们的配置文件读出,并且转换为json对象

然后我们在后面的地方就可以采用pkg.XXX的方式访问其中的数据了

以上描述--抄袭的,我比较懒-直接拿过用

grunt.loadNpmTasks('xxx'); 加载模块
grunt.registerTask('default', ['xxx']);默认执行任务

看看实例:

Gruntfile.js

module.exports = function (grunt) {
// 项目配置
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
uglify:{
js:{
files:[{
expand: true,
cwd: 'src/js',
src: '**/*.js',
dest: 'dist/js'
}]
}
}
});
grunt.loadNpmTasks('grunt-contrib-uglify');
// 默认任务
grunt.registerTask('default', ['uglify']);
}
  • expand:如果设为true,就表示下面文件名的占位符(即*号)都要扩展成具体的文件名。
  • cwd:需要处理的文件(input)所在的目录。
  • src:表示需要处理的文件。如果采用数组形式,数组的每一项就是一个文件名,可以使用通配符。
  • dest:表示处理后的文件名或所在目录。
  • ext:表示处理后的文件后缀名。

grunt.initConfig:定义各种模块的参数,每一个成员项对应一个同名模块。
grunt.loadNpmTasks:加载完成任务所需的模块。
grunt.registerTask:定义具体的任务。第一个参数为任务名,第二个参数是一个数组, 表示该任务需要依次使用的模块。

项目目录创建src文件夹,里边有js文件夹, js文件夹下有两个js文件。

执行命令: grunt

看到由原来9.72kb ---压缩到--->5.8kb,同时生产一个压缩目录:

css,html,img压缩原理都是一样的。针对每个文件一 一 压缩。

'use strict';
module.exports = function (grunt) {
// 项目配置
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
uglify:{
js:{
files:[{
expand: true,
cwd: 'src/js',
src: '**/*.js',
dest: 'dist/js'
}]
}
}, cssmin:{
// 去除html注释
options: {
collapseWhitespace: true,
conservativeCollapse: true,
collapseBooleanAttributes: true,
removeCommentsFromCDATA: true
},
css:{
files:[{
expand: true,
cwd: 'src/css',
src: '**/*.css',
dest: 'dist/css'
}]
}
},
htmlmin:{
options: {
removeComments: true,
removeCommentsFromCDATA: true,
collapseWhitespace: true,
collapseBooleanAttributes: true
},
html:{
files:[{
expand: true,
cwd: 'src/html',
src: ['**/*.html'],
dest: 'dist/html'
}]
}
},
imagemin: {
dist:{
options: {
optimizationLevel: 3 // 定义 PNG 图片优化水平
}, files:[{
expand: true,
cwd: 'src/img/',
src: ['**/*.{png,jpg,jpeg}'],
dest:'dist/img/'
}]
}
} });
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-htmlmin');
grunt.loadNpmTasks('grunt-contrib-imagemin'); // 默认任务
grunt.registerTask('default', ['uglify','cssmin','htmlmin', 'imagemin']);
// grunt.registerTask('default', ['imagemin']); // grunt.registerTask('minall', ['uglify:buildall']);
}

创建一个任务起个别名:

  // common task.
grunt.registerTask('build-file', 'build file', function() {
grunt.task.run('htmlmin:html');
}); // 默认被执行的任务列表。
grunt.registerTask('default', ['build-file']); // 与下边效果一样
  // grunt.registerTask('default', ['htmlmin:html']);
};

  

grunt 安装使用(一)的更多相关文章

  1. Grunt安装配置教程:前端自动化工作流

    Grunt这货是啥? Grunt 是一个基于任务的 JavaScript 项目命令行构建工具. 最近很火的前端自动化小工具,基于任务的命令行构建工具 http://gruntjs.com Grunt能 ...

  2. grunt安装

    随着node的流行,各种后台的技术应用到前端,依赖注入.自动化测试.构建等等. 本篇就介绍下如何使用Grunt进行构建. grunt安装 由于grunt依赖于nodejs,因此需要先安装nodejs. ...

  3. javascript grunt安装和使用

    grunt是javascript世界的构建工具. 为何要用构建工具? 一句话:自动化.对于需要反复重复的任务,例如压缩(minification).编译.单元测试.linting等.自动化工具可以减轻 ...

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

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

  5. grunt安装和使用教程

    grunt的安装 npm intall -g grunt-cli 新建文件夹grunt,在本地文件中添加package.json和Gruntfile.js文件,其中package.json文件的配置如 ...

  6. grunt安装与配置

    安装 CLI npm install -g grunt-cli//全局安装 npm init //初始化package.json npm init   命令会创建一个基本的package.json文件 ...

  7. grunt安装与运行

    用grunt前,需要先安装nodejs.因为grunt依赖于nodejs.nodejs的安装可以参照我的博客里头的nodejs的下载,安装与测试.   第一步:安装grunt-CLI 注意你的电脑要联 ...

  8. Grunt 安装与配置环境

    当时学习 Grunt 的时候,真是很头疼.分了两个时间段,学习了两次才硬啃下来,之后才能用在项目中.主要原因我认为是学习资料和文档上面写的太高端了.这类的文档或者资料有个显著特点,上来先简单介绍一下这 ...

  9. grunt安装、配置、在webstrom中使用

    1.全局范围安装 Grunt命令行(CLI) npm install -g grunt-cli Grunt CLI的任务很简单:调用与Gruntfile在同一目录中 Grunt.这样带来的好处是,允许 ...

  10. grunt安装_

    grunt_构建WEBJS程序框架,. package.json是文件配置 ====〉〉〉〉 在Gruntfile.js里面会引用到. //目录下直接放node的东西 ,比如: node_module ...

随机推荐

  1. JavaPersistenceWithHibernate第二版笔记-第六章-Mapping inheritance-006Mixing inheritance strategies(@SecondaryTable、@PrimaryKeyJoinColumn、<join fetch="select">)

    一.结构 For example, you can map a class hierarchy to a single table, but, for a particular subclass, s ...

  2. ZROI2018普转提day7t2

    传送门 分析 首先我们不难想到我们一定可以将每一个点分开算,然后看这个点被几个矩形包含 于是对于位置为$(i,j)$的点它被包含的次数为$i * (n-i+1) * j * (m-j+1)$ 这个式子 ...

  3. hadoop运行故障问题解决1——datanode节点启动后自动关闭

    ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Incompatible namespaceID ...

  4. Python学习笔记--2--面向对象编程

    面向对象 类和装饰器@ #coding=gbk class student: def __init__(self,name,grand):#初始化构造函数,self相当于java中的this,相当于一 ...

  5. 【转】虚拟机 NAT网络设置

    我以下写的配置方法别人在网上已经发布过类似的文章.但是我觉的别人写的东西不一定是对的,必须自己亲自试验一下才行.就像有句话说的:“实践是检验真理的唯一标准”以下是我操作的步骤.希望不足的地方,读者能够 ...

  6. WPF之MVVM模式(1)

    MVVM模式 一.MVVM模式概述 MVVM Pattern : Model\View\ViewModel View:视图.UI界面 ViewModel:ViewModel是对Model的封装,通过一 ...

  7. 洛谷P4074 [WC2013]糖果公园(莫队)

    传送门 总算会树形莫队了…… 上次听说树形莫队是给树分块,实在看不懂.然后用括号序列的方法做总算能弄明白了 先说一下什么是括号序列,就是在$dfs$的时候,进入的时候记录一下,出去的时候也记录一下 拿 ...

  8. win10系统重装

    问题描述 win10开启热点网卡坏了,没折腾好.然后把系统网卡折腾坏了. 所以重装了系统,写下我的环境从零到晚上的过程 1安装系统 用WePE安装win10,镜像采用:cn_windows_10_en ...

  9. OpenCV&Qt学习之四——OpenCV 实现人脸检测与相关知识整理

    开发配置 OpenCV的例程中已经带有了人脸检测的例程,位置在:OpenCV\samples\facedetect.cpp文件,OpenCV的安装与这个例子的测试可以参考我之前的博文Linux 下编译 ...

  10. Opencv常用函数讲解

    1.approxPolyDP(Mat(ps), poly, 5, true);//根据点集,拟合出多边形 2.fillConvexPoly(mask, Mat(ps), Scalar(255));根据 ...