grunt例子:https://github.com/Aquarius1993/gruntDemo
1、前提是已经有npm(可以通过安装nodejs实现)
2、 npm update -g npm 更新npm
3、安装 CLI  npm isntall -g grunt-cli
4、 编写GRuntfile.js
 
usemin:

Example: The following block(html文件里学院这样写)

<!-- build:js scripts/site.js -->',
<script src="foo.js"></script>',
<script src="bar.js"></script>',
<script src="baz.js"></script>',
<!-- endbuild -->'

  

is parsed as, and given to createConfig as:

var block = {
type: 'js',
dest: 'scripts/site.js',
src: [
'foo.js',
'bar.js',
'baz.js'
],
raw: [
' <!-- build:js scripts/site.js -->',
' <script src="foo.js"></script>',
' <script src="bar.js"></script>',
' <script src="baz.js"></script>',
' <!-- endbuild -->'
]
};

  

 
Gruntfile.js里写这个:

usemin: {
html: 'index.html',
options: {
blockReplacements: {
less: function (block) {
return '<link rel="stylesheet" href="' + block.dest + '">';
}
}
}
}

  

 
例子/*
* @Author: liheyao
* @Date:   2016-06-08 14:49:25
* @Last Modified by:   liheyao
* @Last Modified time: 2016-06-13 18:04:52
*/
 
module.exports = function(grunt) {
// Project configuration.
var timestamp=new Date().getTime();
grunt.initConfig({
clean: {
all: 'bulid/'
},
copy: {
image: {
files: [
{
expand: true,
cwd: 'src',
src: ['*.html'],
dest: 'bulid/'
},
{
expand: true,
cwd: 'src',
src: ['img/*.{png,jpg,jpeg,gif,ico}'],
dest: 'bulid/'
}
]
}
},
// 合并js
concat: {
options: {
separator: ';',
stripBanners: true
},
prod: {
files: [
{
src: ["src/js/test.js","src/js/test1.js"],
dest: "bulid/js/test-concat.js"
},
{
src: ["src/js/testtest1.js","src/js/testtest2.js","src/js/testtesttest3.js"],
dest: "bulid/js/testtest-concat.js"
}
]
}
},
// 压缩js
uglify: { dev:{ //名字随意
files: {
'bulid/js/test-concat.min.js':['<%= concat.prod.files[0].dest %>'],
'bulid/js/testtest-concat.min.js': ['<%= concat.prod.files[1].dest %>'],
'bulid/js/auto-focus.min.js': ["src/js/auto-focus.js"],
'bulid/js/index.min.js': ["src/js/index.js"],
'bulid/js/conditional.min.js': ["src/js/conditional.js"],
}
}
},
jshint: {//js验证
all: ['Gruntfile.js']
},
sass: {//默认不压缩 可通过style改变
dist: {
options: {
style: 'compressed'//style: nested 嵌套缩进的css代码。是默认值 expanded 没有缩进 扩展的css代码 compact 简洁格式的css代码 compressed 压缩后的css代码
},
files: [{
expand: true,
cwd: 'src/sass/',
src: ['*.scss','*.css'],
dest: 'bulid/css',
ext: '.css'
}]
}
},
htmlmin: {
options: {
removeComments: true,
removeCommentsFromCDATA: true,
collapseWhitespace: true,
collapseBooleanAttributes: true,
removeAttributeQuotes: true,
removeRedundantAttributes: true,
useShortDoctype: true,
removeEmptyAttributes: true,
removeOptionalTags: true
},
html: {
files: [{
expand: true,
cwd: 'bulid/',
src: ['*.html'],
dest: 'bulid/'
}]
}
},
imagemin: {
prod: {
options: {
optimizationLevel: 7,
pngquant: true
},
files: [
{
expand: true,
cwd: 'bulid/',
src: ['img/*.{png,jpg,jpeg,gif,webp,svg}'],
dest: 'bulid/'
}
]
}
},
// 处理html中css、js 引入合并问题
usemin: {
html: ['bulid/*.html'],
options: {
blockReplacements: {
js: function (block) {
return '<script type="text/javascript" src="' + block.dest + '?t=' + timestamp + '"></script>';
},
css: function (block) {
return '<link rel="stylesheet" type="text/css" href="' + block.dest + '?t=' + timestamp + '"/>';
}
}
}
},
watch: {
sass: {
files: ['src/sass/*.scss'],
tasks:'sass'
},
uglify:{
files: ['src/js/*.js'],
tasks: 'uglify'
},
htmlmin: {
files: ['src/*.html'],
tasks: 'htmlmin'
},
livereload: {
options: {
livereload: true
},
files:'bulid/**/*'
}
}
});
// 加载包含“uglify”任务的插件 grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-contrib-htmlmin');
grunt.loadNpmTasks('grunt-contrib-imagemin');
grunt.loadNpmTasks('grunt-contrib-clean');
grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-usemin');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-sass');
grunt.loadNpmTasks('grunt-contrib-copy');
// 默认被执行的任务列表
grunt.registerTask('default',['clean','copy','concat','uglify','jshint','sass','usemin','htmlmin','imagemin']);//
};

  

 
 

grunt使用的更多相关文章

  1. 初学seaJs模块化开发,利用grunt打包,减少http请求

    原文地址:初学seaJs模块化开发,利用grunt打包,减少http请求 未压缩合并的演示地址:demo2 学习seaJs的模块化开发,适合对seajs基础有所了解的同学看,目录结构 js — —di ...

  2. grunt配置任务

    这个指南解释了如何使用 Gruntfile 来为你的项目配置task.如果你还不知道 Gruntfile 是什么,请先阅读 快速入门 指南并看看这个Gruntfile 实例. Grunt配置 Grun ...

  3. 快速开发Grunt插件----压缩js模板

    前言 Grunt是一款前端构建工具,帮助我们自动化搭建前端工程.它可以实现自动对js.css.html文件的合并.压缩等一些列操作.Grunt有很多插件,每一款插件实现某个功能,你可以通过npm命名去 ...

  4. 是时候搁置Grunt,耍一耍gulp了

    也算是用了半年Grunt,几个月前也写过一篇它的入门文章(点此查看),不得不说它是前端项目的一个得力助手.不过技术工具跟语言一样日新月异,总会有更好用的新的东西把旧的拍死在沙滩上(当然Grunt肯定没 ...

  5. 应用Grunt自动化地优化你的项目前端

    在不久前我曾写了一篇 应用r.js来优化你的前端 的文章,为大家介绍了r.js这个实用工具,它可以很好地压缩.合并前端文件并打包整个项目.但是如果将r.js放到项目中,我们不得不顾及到一个问题——项目 ...

  6. Grunt(页面静态引入的文件地址的改变探究)-V2.0

    相关插件的引用: grunt-usemin  对页面的操作 grunt-contrib-cssmin  压缩css load-grunt-tasks 瘦身gruntfile grunt-rev给md5 ...

  7. Grunt基本使用-V1.0

    浅语:grunt中文网:http://www.gruntjs.net/ 第一步:Grunt 依赖 Node.js 所以在安装之前确保你安装了 Node.js.然后开始安装 Grunt. 实际上,安装的 ...

  8. nodejs、npm、grunt——名词解释

    最近着手开发一个新项目,打算从工程化的角度整理一套自己的前端开发.发布体系. grunt这些工具,之前别人用我也用,并没有认真想过它们的前世今生,正好趁着这个机会,我来理一理目前业界比较流行这些工具的 ...

  9. grunt自定义任务——合并压缩css和js

    npm文档:www.npmjs.com grunt基础教程:http://www.gruntjs.net/docs/getting-started/ http://www.w3cplus.com/to ...

  10. Grunt学习使用

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

随机推荐

  1. JavaConfig 使用Java代码进行显示配置

    从Spring 3起,JavaConfig功能已经包含在Spring核心模块,它允许开发者将bean定义和在Spring配置XML文件到Java类中. 需要先加载spring-context 包 &l ...

  2. SaltStack配置salt-api第十二篇

    介绍 SaltStack官方提供有REST API格式的 salt-api项目,将使Salt与第三方系统集成变得尤为简单.本文讲带你了解如何安装配置Salt-API, 如何利用Salt-API获取想要 ...

  3. mysql慢查询和php-fpm慢日志

    MySQL慢查询 在web开发中,我们经常会写出一些SQL语句,一条糟糕的SQL语句可能让你的整个程序都非常慢,超过10秒一般用户就会选择关闭网页,如何优化SQL语句将那些运行时间 比较长的SQL语句 ...

  4. 02_MySQL DQL_条件查询

    #查询2:条件查询 /*语法: select 查询列表 from 表名 where 筛选条件; 执行顺序:找到表,逐行筛选,选出行的相关列呈现 分类: 1)按条件表达式筛选 条件运算符:> &l ...

  5. Python类变量,实例变量,类方法,实例方法,静态方法的分析

    Python作为动态语言,跟静态语言如c/c++有很大区别,其中的一个重要的特性就是Python的变量无需声明直接可用.同样,类的成员变量无需声明,直接可用.目的是为了动态语言跟灵活,在思路想到的时候 ...

  6. CentOS7下Firewall常用命令

    安装它,只需 yum install firewalld 如果需要图形界面的话,则再安装 yum install firewall-config 一.介绍 防火墙守护 firewalld 服务引入了一 ...

  7. .net core mvc部署到IIS导出Word 提示80070005拒绝访问

    项目中相信大家经常会遇到导出Word.Excel等需求,在实际开发环境中,一般不会出现什么问题,但当发布到IIS上后可能会遇到各种各样的问题,一般都是权限的问题.前几天把公司项目发布后,出现Word导 ...

  8. group_concat长度限制

    #在MySQL配置文件(my.ini)中默认无该配置项,使用默认值时,值为1024,可在客户端执行下列语句修改: #SET GLOBAL group_concat_max_len = 1024; #该 ...

  9. 【Demo】CSS3 过渡

    CSS3 过渡transition 应用于宽度属性的过渡效果,时长为 2 秒: div { transition: width 2s; -webkit-transition: width 2s; /* ...

  10. UVA-1615 Highway (贪心,区间选点)

    题目大意:有一条沿x轴正方向,长为L的高速公路,n个村庄,要求修建最少的公路出口数目,使得每个村庄到出口的距离不大于D. 题目分析:区间选点问题.在x轴上,到每个村庄距离为D的点有两个(超出范围除外) ...