1. 新建文件和文件目录

mkdir grunt-in-action
cd grunt-in-action
cd grunt-in-action
mkdir grunt-empty
cd grunt-empty vim index.html
mkdir js
cd js
vim index.js
cd ..

2. npm和grunt初始化

npm init
npm install grunt --save-dev
npm install //如果想要node_module,就 加载

3. 安装task

npm install load-grunt-tasks --save-dev

npm install time-grunt --save-dev

npm install grunt-contrib-copy --save-dev

npm install grunt-contrib-clean --save-dev

4. 写入好配置

'use strict';

module.exports = function (grunt) {
//引入执行task的grunt插件或者叫做module
require('load-grunt-tasks')(grunt);
//引入执行事件显示grunt的模块
require('time-grunt')(grunt); var config = {
app: 'app', //app 代表app目录
dist: 'dist' //dist 代表dest目录
} grunt.initConfig({
config: config, //copy任务
copy: {
/*
//字符串形式的
dist_html: {
//src 表示源文件
src: '<%= config.app %>/index.html',
//dest 表示布标文件
dest: '<%= config.dist %>/index.html'
},
dist_js: {
src: '<%= config.app %>/js/index.js',
dest: '<%= config.dist %>/js/index.js'
}
*/
/*
//数组形式
dist: {
files: [
{
src: '<%= config.app %>/index.html',
dest: '<%= config.dist %>/index.html'
},
{
src: '<%= config.app %>/js/index.js',
dest: '<%= config.dist %>/js/index.js'
}
]
}*/
//对象简直对
dist: {
/*files: {
'<%= config.dist %>/index.html':'<%= config.app %>/index.html',
'<%= config.dist %>/js/index.js': ['<%= config.app %>/js/index.js']
}*/
files: [
{
expand: true,
cwd: '<%= config.app %>/', //表示源码目录
// src: '*.html',
src: '**/*.js',
dest: '<%= config.dist %>/', //表示目标路
ext: '.js', //后缀名匹配
// extDot: 'first' //表示文件名第一个点之后内容与src匹配
extDot: 'last',//表示文件名最后一个点之后的内容与src匹配
flatten: true, //表示平铺,意思在dist目录下就生成了,而不再生成目标子级目录
rename: function(dest,src){ //重命名
/*
* rename 要在ext extdot flatten开启才有效
* dest 表示目标目录
* src 表示文件名
* */
return dest + 'js/' + src;
},
}
]
}
},
//清楚任务,注意看英语单词就能理解其意思
clean: {
dist: {
/*
src: '<%= config.dist %>',
*/
//这里面的*类似正则
src: ['<%= config.dist %>/**/*'],
// src: '<%= config.dist %>/'
//额外参数
/*
* filter: fn(param1);
*param1 表示文件目录
* */
// filter: function (filepath) {
// return (!grunt.file.isDir(filepath));
// }
/*
* nonull
* dot
* matchBase
* expand
* */
}
}
});
};

5.运行grunt

grunt copy //运行copy task

grunt  clean //运行clean task

6.最终的目录结构

grunt学习二的更多相关文章

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

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

  2. Grunt学习使用

    原文地址:Grunt学习使用必看 grunt简介神马的不多说,到处一大堆. 我只说说我已经实现了的代码. 按照官方的教程 相信已经配置好了,接下来说 package.json 和 Gruntfile. ...

  3. emberjs学习二(ember-data和localstorage_adapter)

    emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...

  4. ReactJS入门学习二

    ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...

  5. TweenMax动画库学习(二)

    目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            Tw ...

  6. Hbase深入学习(二) 安装hbase

    Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...

  7. Struts2框架学习(二) Action

    Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...

  8. Python学习二:词典基础详解

    作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...

  9. Quartz学习--二 Hello Quartz! 和源码分析

    Quartz学习--二  Hello Quartz! 和源码分析 三.  Hello Quartz! 我会跟着 第一章 6.2 的图来 进行同步代码编写 简单入门示例: 创建一个新的java普通工程 ...

随机推荐

  1. [Vim] 搜索模式(正则表达式)

    本文介绍如何使用Vim的搜索模式. 搜索单词 Vim中使用 \< 和 \> 分别表示单词的开头和结尾,例如查找单词 i 而不是字母 i ,在正常模式下,按下 / 启动搜索模式,输入 \&l ...

  2. 国内CDN加速现状

    什么是CDN CDN的全称是Content Delivery Network,即内容分发网络.是位于网络层与应用层之间的网络应用,其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内 ...

  3. ubuntu MySQL采用apt-get install安装目录

    一). ubuntu下mysql安装布局: /usr/bin                      客户端程序和mysql_install_db /var/lib/mysql            ...

  4. React Native 入门到原理(详解)

    抛砖引玉(帮你更好的去理解怎么产生的 能做什么) 砖一.动态配置 由于 AppStore 审核周期的限制,如何动态的更改 app 成为了永恒的话题.无论采用何种方式,我们的流程总是可以归结为以下三部曲 ...

  5. 获取访客IP、地区位置信息、浏览器、来源页面

    <?php //这个类似用来获取访客信息的 //方便统计 class visitorInfo { //获取访客ip public function getIp() { $ip=false; if ...

  6. 【cs229-Lecture2】Gradient Descent 最小二乘回归问题解析表达式推导过程及实现源码(无需迭代)

    视频地址:http://v.163.com/movie/2008/1/B/O/M6SGF6VB4_M6SGHJ9BO.html 机器学习课程的所有讲义及课后作业:http://pan.baidu.co ...

  7. 分布式实时日志系统(四) 环境搭建之centos 6.4下hbase 1.0.1 分布式集群搭建

    一.hbase简介 HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为 Java.它是Apache软件基金会的Hadoop项目的一部分,运行 ...

  8. Qt获取CPU编号和硬盘序列号

    windows下执行命令除了用cmd之外,还有个东西叫WMIC,非常强大,可以通过他获取很多信息,包括硬件信息. QString frmMain::getWMIC(const QString & ...

  9. sencha touch 我的公用类myUtil(废弃 仅参考)

    /*公共类*/ Ext.define('myUtil', { statics: { //store公用加载方法 storeLoadById: function (id) { var store = E ...

  10. spring应用中多次读取http post方法中的流(附源码)

    一.问题简述 先说下为啥有这个需求,在基于spring的web应用中,一般会在controller层获取http方法body中的数据. 方式1: 比如http请求的content-type为appli ...