grunt使用
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 -->'
]
};
usemin: {
html: 'index.html',
options: {
blockReplacements: {
less: function (block) {
return '<link rel="stylesheet" href="' + block.dest + '">';
}
}
}
}
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使用的更多相关文章
- 初学seaJs模块化开发,利用grunt打包,减少http请求
原文地址:初学seaJs模块化开发,利用grunt打包,减少http请求 未压缩合并的演示地址:demo2 学习seaJs的模块化开发,适合对seajs基础有所了解的同学看,目录结构 js — —di ...
- grunt配置任务
这个指南解释了如何使用 Gruntfile 来为你的项目配置task.如果你还不知道 Gruntfile 是什么,请先阅读 快速入门 指南并看看这个Gruntfile 实例. Grunt配置 Grun ...
- 快速开发Grunt插件----压缩js模板
前言 Grunt是一款前端构建工具,帮助我们自动化搭建前端工程.它可以实现自动对js.css.html文件的合并.压缩等一些列操作.Grunt有很多插件,每一款插件实现某个功能,你可以通过npm命名去 ...
- 是时候搁置Grunt,耍一耍gulp了
也算是用了半年Grunt,几个月前也写过一篇它的入门文章(点此查看),不得不说它是前端项目的一个得力助手.不过技术工具跟语言一样日新月异,总会有更好用的新的东西把旧的拍死在沙滩上(当然Grunt肯定没 ...
- 应用Grunt自动化地优化你的项目前端
在不久前我曾写了一篇 应用r.js来优化你的前端 的文章,为大家介绍了r.js这个实用工具,它可以很好地压缩.合并前端文件并打包整个项目.但是如果将r.js放到项目中,我们不得不顾及到一个问题——项目 ...
- Grunt(页面静态引入的文件地址的改变探究)-V2.0
相关插件的引用: grunt-usemin 对页面的操作 grunt-contrib-cssmin 压缩css load-grunt-tasks 瘦身gruntfile grunt-rev给md5 ...
- Grunt基本使用-V1.0
浅语:grunt中文网:http://www.gruntjs.net/ 第一步:Grunt 依赖 Node.js 所以在安装之前确保你安装了 Node.js.然后开始安装 Grunt. 实际上,安装的 ...
- nodejs、npm、grunt——名词解释
最近着手开发一个新项目,打算从工程化的角度整理一套自己的前端开发.发布体系. grunt这些工具,之前别人用我也用,并没有认真想过它们的前世今生,正好趁着这个机会,我来理一理目前业界比较流行这些工具的 ...
- grunt自定义任务——合并压缩css和js
npm文档:www.npmjs.com grunt基础教程:http://www.gruntjs.net/docs/getting-started/ http://www.w3cplus.com/to ...
- Grunt学习使用
原文地址:Grunt学习使用必看 grunt简介神马的不多说,到处一大堆. 我只说说我已经实现了的代码. 按照官方的教程 相信已经配置好了,接下来说 package.json 和 Gruntfile. ...
随机推荐
- [转]常见HTTP状态(如200,304,404,503)
在网站建设的实际应用中,容易出现很多小小的失误,就像mysql当初优化不到位,影响整体网站的浏览效果一样,其实,网站的常规http状态码的表现也是一样,Google无法验证网站几种解决办法,提及到由于 ...
- 问下大家,chorme里用开发者工具看headers,点network标签然后刷新网页并没有headers选项,怎么破?
问下大家,chorme里用开发者工具看headers,点network标签然后刷新网页并没有headers选项,怎么破? 请教个问题 jmeter在Linux服务器压测,抛出很多错误率 但日志中没看到 ...
- Python基础笔记系列八:字符串的运算和相关函数
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 字符串的运算1.字符串的加法和乘法 python中不但支持字符串相加,还支 ...
- codeforces27D Ring Road 2
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- 使用Python操作memcache
Python连接memcached的库有很多,处于简单以及高效的原则,最终选择了pymemcache, 优点 完全实现了memcached text协议 对于send/recv操作可以配置timeou ...
- Burpsuite的简单应用-y-Proxy
打开burpsuite:Proxy功能 一.进入Proxy页面,代理设置 将浏览器的代理地址设置一样: 之前没有代理,直接添加,有的话,可以勾选就好了:不同浏览器,设置位置不一致,百度参考 二.执行: ...
- 小米2S刷Android4.4且双系统共存
视频教程 http://v.youku.com/v_show/id_XNjQxNzQ5NDAw.html 必备知识 进入Recovery模式:同时按住电源键+音量上键,等到屏幕亮起时,放开电源键. 特 ...
- javascript中的__proto__ 和prototype
不错的一张图
- js从数组中随机获取n个不重复的数据
做云课堂的作业时遇到一要求,实现刷新页面时显示不同数据,(数组中20个据,页面加载10个).思路就是从0-19中随机生成10个不同的数,让数组取下标输出数据. 下面是在num的范围内生成n个不重复的数 ...
- JS之BOM和DOM(来源、方法、内容、应用)
1.Javascript组成(此文为转载) JavaScript的实现包括以下3个部分: 1)核心(ECMAScript):描述了JS的语法和基本对象. 2)文档对象模型 (DOM):处理网页内容的方 ...