grunt安装与配置

安装 CLI

npm install -g grunt-cli//全局安装

npm init //初始化package.json

npm init   命令会创建一个基本的package.json文件。

npm install grunt --save-dev

npm install grunt-contrib-jshint --save-dev

.......//安装你需要的依赖

安装完以后在package.json的同级创建一个Gruntfile.js配置文件

配置如下

module.exports = function(grunt) {
var timestamp = new Date().getTime();
grunt.initConfig({
pkg: grunt.file.readJSON(‘package.json‘),
//文件合并
concat: {
options: {
//定义一个用于插入合并输出文件之间的字符
seperator: ‘;‘
},
build: {
//将要合并的文件
// src:[‘src/**/*.js‘],
//合并后的js文件的存放位置
// dest:[‘build/<%= pkg.name %>.js‘]
files: { // Dictionary of files
‘dist/css/main.css‘: [‘src/**/*.css‘, ‘!src/**/*.min.css‘],
‘dist/js/index.js‘: ‘src/**/*.js‘
//‘src/sass/all.scss‘:‘src/sass/*.scss‘
}
},
concatsass: {
files: {
‘src/sass/all.scss‘: ‘src/sass/*.scss‘
}
}
},
//压缩js
uglify: {
options: {
banner: ‘/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n‘
},
/*dist:{
files:{
‘dist/<%= pkg.name %>.min.js‘:[‘<%= concat.dist.dest %>‘]
}
}*/
build: {
src: ‘dist/js/index.js‘,
dest: ‘dist/js/index.min.js‘
}
},
//压缩html
htmlmin: {

options: { // Target options
removeComments: true,
removeCommentsFromCDATA: true
// collapseWhitespace: true,
// minifyCSS:true
// collapseBooleanAttributes: true,
// removeAttributeQuotes: true,
// removeRedundantAttributes: true,
// useShortDoctype: true,
// removeEmptyAttributes: true,
// removeOptionalTags: true
},
html: {
files: [{ // Dictionary of files
expand: true,
cwd: ‘dist‘,
src: [‘**/*.html‘],
dest: ‘dist‘ //‘destination‘:‘source‘
}]
}
},
//js的语法检测
jshint: {
files: [‘Gruntfile.js‘, ‘src/**/*.js‘, ‘test/**/*.js‘, ‘!src/**/*.min.js‘],
options: {
//这里是覆盖JSHint默认配置的选项
globals: {
jQuery: true,
console: true,
module: true,
document: true
}
}
},
//css压缩
cssmin: {
options: {
//shorthandCompactiong:false,
roundingPercision: -1 //这个属性应该是将样式相同的都提取出来
},
build: {
files: {
// ‘dist/css/main.css‘: ‘dist/css/main.css‘
}
}
},
//
// qunit:{
// files:[‘test/**/*.html‘]
// },
//监听事件
watch: {
build: {
files: [‘<%= jshint.files %>‘, ‘src/**/*.css‘],
tasks: [‘jshint‘, ‘qunit‘],
options: { spawn: false }
}

},
//处理html中css、js 引入合并问题
usemin: {
html: ‘dist/**/*.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 + ‘"/>‘;
}
}
}
},
//

//copy
copy: {
src: {
files: [
{ expand: true, cwd: ‘src‘, src: [‘**/*.html‘], dest: ‘dist‘ }, //设置的相对于哪个路径找文件就是cwd的值,这里我写的html在test文件里,所以设置成test;所有的源文件路径,都是相对于cwd
//dist 目标路径
{ expand: true, cwd: ‘src/css‘, src: [‘*.min.css‘], dest: ‘dist/css‘ },
{ expand: true, cwd: ‘src/js‘, src: [‘*.min.js‘], dest: ‘dist/js‘ }
]
},
image: {
files: [
{ expand: true, cwd: ‘src‘, src: [‘images/**/*.{png,jpg,jpeg,gif}‘], dest: ‘dist‘ }
]
},
robots: {
files: [
{ expand: true, cwd: ‘src‘, src: [‘robots.txt‘], dest: ‘dist‘ }
]
}
},
//图片压缩
imagemin: {
static: { // Target
options: { // Target options
optimizationLevel: 3,
svgoPlugins: [{ removeViewBox: false }],
use: []
},
files: { // Dictionary of files
// ‘dist/img.png‘: ‘src/img.png‘, // ‘destination‘: ‘source‘
// ‘dist/img.jpg‘: ‘src/img.jpg‘,
// ‘dist/img.gif‘: ‘src/img.gif‘
}
},
dynamic: { // Another target
files: [{
expand: true, // Enable dynamic expansion
cwd: ‘src/‘, // Src matches are relative to this path
src: [‘**/*.{png,jpg,gif}‘], // Actual patterns to match
dest: ‘dist‘ // Destination path prefix
}]
}
},
//requirejs 打包
requirejs: {
options: {
baseUrl: ‘‘,
paths: {
"$": ‘src/zepto‘,
"_": ‘src/underscore‘,
"B": ‘src/backbone‘
},
include: [‘$‘, ‘_‘, ‘B‘],

out: ‘dist/libs.js‘ //会将include里面的文件打包为out对应的文件,paths的本身意义不大,就是用于配置include里面的指向
}
},
//sprite 雪碧图 //grunt-spritesmith
sprite: {
options: {
//追加时间戳,默认不追加
spritestamp: true
},
//image-set 示例
all: {
src: ‘src/images/*.jpg‘,
dest: ‘dist/images/spritesheet.png‘,
destCss: ‘dist/css/sprites.css‘
}
},
sass: {
dist: {
// src:‘src/**/*.scss‘,
// dest:‘dist/css/compiled.css‘
options: { // Target options
style: ‘expanded‘
},
files: {
‘src/css/all.css‘: ‘src/sass/all.scss‘
}
}

},
//清理文件
clean: {
html: [‘dist/**/*.html‘],
sass: [‘src/sass/all.scss‘],
css: [‘dist/css/*.css‘],
js: [‘dist/js/*.js‘],
images: [‘dist/images/**/*.{png,jpg,jpeg,gif}‘]
},
//合并 html
includereplace: {
dist: {
files: [
{ src: [‘**/*.html‘], dest: ‘dist‘, expand: true, cwd: ‘src‘ }
]
}
}

});

//加载包含"uglify" 任务的插件
grunt.loadNpmTasks(‘grunt-contrib-uglify‘);
grunt.loadNpmTasks(‘grunt-contrib-copy‘);
grunt.loadNpmTasks(‘grunt-contrib-jshint‘);
//grunt.loadNpmTasks(‘grunt-contrib-qunit‘);
grunt.loadNpmTasks(‘grunt-contrib-htmlmin‘);
grunt.loadNpmTasks(‘grunt-contrib-cssmin‘);
grunt.loadNpmTasks(‘grunt-contrib-watch‘);
grunt.loadNpmTasks(‘grunt-contrib-concat‘);
grunt.loadNpmTasks(‘grunt-contrib-imagemin‘);
grunt.loadNpmTasks(‘grunt-usemin‘);
grunt.loadNpmTasks(‘grunt-contrib-requirejs‘);
grunt.loadNpmTasks(‘grunt-spritesmith‘);
grunt.loadNpmTasks(‘grunt-contrib-sass‘);
grunt.loadNpmTasks(‘grunt-contrib-clean‘);
grunt.loadNpmTasks(‘grunt-include-replace‘);

//默认被执行的任务列表
//grunt.registerTask(‘dev‘,[‘clean‘,‘copy‘,‘concat‘,‘sass‘,‘uglify‘,‘copy‘,‘usemin‘,‘htmlmin‘]);
grunt.registerTask(‘dev‘, [‘clean‘, ‘jshint‘, ‘copy‘, ‘concat:concatsass‘, ‘sass‘, ‘concat:build‘, ‘uglify‘, ‘includereplace‘, ‘usemin‘]);
grunt.registerTask(‘dist‘, [‘clean‘, ‘jshint‘, ‘copy‘, ‘concat:concatsass‘, ‘sass‘, ‘concat:build‘, ‘uglify‘, ‘cssmin‘, ‘includereplace‘, ‘usemin‘]);
};

时间: 2024-08-25 12:33:36

grunt安装与配置的相关文章

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

1.全局范围安装 Grunt命令行(CLI) npm install -g grunt-cli Grunt CLI的任务很简单:调用与Gruntfile在同一目录中 Grunt.这样带来的好处是,允许在同一个系统上同时安装多个版本的 Grunt. 2.安装grunt相关模块 在package.json文件中添加所需grunt模块,例如: "grunt": "^0.4.5", "grunt-contrib-concat": "^0.5.1

Grunt 安装与配置环境

当时学习 Grunt 的时候,真是很头疼.分了两个时间段,学习了两次才硬啃下来,之后才能用在项目中.主要原因我认为是学习资料和文档上面写的太高端了.这类的文档或者资料有个显著特点,上来先简单介绍一下这个玩意(Grunt 是一个 JavaScript 任务运行器),然后就是如何安装,直接给你配置文件的语法,如何使用插件,新手往往看完还不知所以然. 就像我第一次学习的时候,只是大体知道 Grunt 很火,大家都在用,但耐着心看文档和一些别人的学习总结,还是困惑,这到底是个什么东西?究竟干什么用?为什

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

Grunt这货是啥? Grunt 是一个基于任务的 JavaScript 项目命令行构建工具. 最近很火的前端自动化小工具,基于任务的命令行构建工具 http://gruntjs.com Grunt能帮我们干啥? 在开始介绍前,先向大家描述下面的场景: [场景1:项目开始前] 先建立一个 projA 的文件夹 再建 html css js images (建5个或以上文件夹,花费1分钟) 拷贝 CSS库(Yui Reset bootstrap)JS库(Requiet.js Seajs jQuer

Pig安装与配置

---------------------------------- 一.前言 二.环境 三.配置 1.本地模式 2.MapReduce模式 四.测试 ---------------------------------- 一.前言 Pig是一个用来处理大规模数据集的平台,和Google的Sawzall类似,由Yahoo!贡献给Apache.MapReduce的查询矿街虽然主要是Map和Reduce两个函数,但是用户从编程写程序到在集群中部署.运行,仍然要花费不少时间.使用Pig可以简化MapRe

javascript grunt安装和使用

grunt是javascript世界的构建工具. 为何要用构建工具? 一句话:自动化.对于需要反复重复的任务,例如压缩(minification).编译.单元测试.linting等.自动化工具可以减轻你的劳动,简化你的工作.当你正确配置好了任务,任务运行器就会帮你自动完成大部分无聊的工作. 为什么要使用Grunt? Grunt生态系统非常庞大,并且一直在增长.由于拥有数量庞大的插件可供选择,因此,你可以利用Grunt自动完成任何事,并且花费最少的代价.如果找不到你所需要的插件,那就自己动手创造一

elasticsearch(一):安装与配置

一.elastic search的安装与配置 1.安装Java 并且配置JAVA_HOME环境变量. 2.下载elasticsearch,下载地址:https://www.elastic.co/downloads/elasticsearch.博主下载时最新版为6.3.2,下面所有都是基于6.3.2进行的测试.选择下载zip文件,这样解压即可使用. 3.解压后修改配置文件.进入到elasticsearch所在目录下面的config下面,修改elasticsearch.yml文件,修改内容如下: (

Windows下MySQL下载安装、配置与使用

用过MySQL之后,不论容量的话,发现比其他两个(sql server .oracle)好用的多,一下子就喜欢上了.下面给那些还不知道怎么弄的童鞋们写下具体的方法步骤. (我这个写得有点太详细了,甚至有些繁琐,有很多步骤在其他的教程文档里都是省略掉的,但我还是要写出来,因为我当时走了很多弯路,我希望你们能够避免我走的这些弯路.当然,知道同学的可以略过,选择你想知道的地方看) 第一大步:下载.(不需要注册也可以下载,直接点下面的no thanks) a.俗话说:“巧妇难为无米之炊”嘛!我这里用的是

Centos 7.3下 Linux For SQL Server安装及配置介绍

Centos 7.3下Linux For SQL Server安装及配置介绍 说到SQL Server服务,我们大家都知道是Microsoft公司的数据库服务,当然说到数据库,现在主要分为三大商:1:Oracle.2:Msql Server.3:Mysql:三种数据库在当下环境受到不了不同程度的关注:比如oracle主要应用到大型的商业比较多,比如银行:SQL Server主要在常见的互联网公司使用:mysql主要应用于小型的企业或者服务商使用:当然从费用上来说,Oracle是最贵的,也是最为稳

redis的单机安装与配置以及生产环境启动方案

简单介绍一下redis的单机安装与配置,方便自己记录安装步骤的同时方便他人获取知识. 首先,从官网下载最新版的(稳定版)的redis安装包.官网地址如下:https://redis.io/download 下载源码包后,redis需要编译安装.需要安装gcc和tcl,gcc用于编译tcl用于测试. 使用命令安装gcc,yum install gcc,一路选择yes,gcc就可以安装成功. 接下来安装tcl,首先获取tcl源码包(见百度云盘)或者使用命令:wget http://downloads