grunt构建一个项目
准备工作:grunt基于node环境运行,所有先安装node.js
1.安装grunt,通过node的npm的包管理工具
>npm install grunt --save-dev
2.npm init在项目中引导创建一个package.json文件
>npm init
3.新建一个Gruntfile的js文件,主要是写入grunt的配置
module.exprots = function(grunt){
grunt.initConfig({此处写配置的信息})
}
4.几个常用的插件
(1)less监听
>npm install grunt-contrib-less --save-dev
a.配置信息:
less:{development: {files: {'public/css/home/home.css': 'public/css/home/home.less'}}}
b.注册信息:
grunt.loadNpmTasks('grunt-contrib-less')
c.运行:
>grunt less
(2)watch监听
>npm install grunt-contrib-watch --save-dev
a.配置信息:
watch:{css: {files: [ 'public/css/home/home.less'],tasks:['less'],options:{livereload:true}}}
b.注册信息:
grunt.loadNpmTasks('grunt-contrib-watch')
c.运行:
>grunt watch
(3)浏览器同步测试工具
>npm install browser-sync --save-dev
a.配置信息:
不需要配置信息
b.注册信息:
不需要注册信息
c.运行:
>browser-sync start --server --file "*.html"
(4)css压缩
>npm install grunt-contrib-cssmin --save-dev
a.配置信息:
cssmin: {
target: {
files: [{
expand: true,
cwd: 'public/css/home', //需要压缩的css路径
src: ['*.css', '!*.min.css'], //需要压缩的css
dest: 'build/css/home', //压缩之后的路径
ext: '.min.css' //压缩之后的css后缀名
}]
}
}
b.注册信息:
grunt.loadNpmTasks('grunt-contrib-cssmin')
c.运行:
>grunt cssmin
(5)js合并压缩
>npm install grunt-contrib-uglify --save-dev
a.配置信息:
uglify: {
my_target: {
files: {
'build/js/home/home.min.js': ['public/js/home/home1.js', 'public/js/home/home2.js']
}
}
}
b.注册信息:
grunt.loadNpmTasks('grunt-contrib-uglify')
c.运行:
>grunt uglify
(6)合并css和js
>npm install grunt-contrib-concat --save-dev
a.配置信息:
concat:{
js:{
files:{
'build/js/home/concat.js':['public/js/home/*.js']
}
},
css:{
files:{
'build/css/home/concat.css':['public/css/home/*.css']
}
}
}
b.注册信息:
grunt.loadNpmTasks('grunt-contrib-concat')
c.运行:
>grunt concat
(7)css精灵
>npm install grunt-spritesmith --save-dev
a.配置信息:
sprite:{
all:{
src:["public/img/*.png","public/img/*.jpg"], //需要整理的图片
dest:"build/img/spriteRes.png", //生成一张图片的名称
destCss:"build/css/spriteRes.css" //生成css的路径和文件名
}
}
b.注册信息:
grunt.loadNpmTasks('grunt-spritesmith')
c.运行:
>grunt sprite
(8)图片压缩
>npm install grunt-contrib-imagemin --save-dev
a.配置信息:
imagemin:{
release:{
files:[{
expand:true,
src:['build/img/spriteRes.png']
}],
options:{
optimizationLevel:3
}
}
}
b.注册信息:
grunt.loadNpmTasks('grunt-contrib-imagemin')
c.运行:
>grunt imagemin
(9)注册多任务执行
grunt构建一个项目的更多相关文章
- 使用 gulp 构建一个项目
本章将介绍 gulp-watch-path stream-combiner2 gulp-sourcemaps gulp-autoprefixer 您还可以直接学习以下模块: 安装 Node 和 gul ...
- 基于Grunt构建一个的项目
没有搭建环境的,请参考<Grunt自动化构建环境搭建 >,搭建完成后 新建一个项目目录,这里建立一个“Demo”目录 运行CMD,并进入这个目录,运行 npm install grunt ...
- 使用grunt构建前端项目
1. grunt构建工具是基于nodejs上的,所以在使用之前一定要先安装好nodejs 2. 安装好nodejs后,node -v查看node版本 npm-v 查看npm版本信息 3. 在需要用到的 ...
- Vue+webpack构建一个项目
1.安装CLI命令的工具 推荐用淘宝的镜像 npm install -g @vue/cli @vue/cli-init 2.使用命令构建一个名为myapp的项目 vue init webpack m ...
- 2016-7-15(1)使用gulp构建一个项目
gulp是前端开发过程中自动构建项目的工具,相同作用的还有grunt.构建工具依 靠插件能够自动监测文件变化以及完成js/sass/less/html/image/css/coffee等文件的语法检查 ...
- 使用gulp构建一个项目
gulp是前端开发过程中自动构建项目的工具,相同作用的还有grunt.构建工具依靠插件能够自动监测文件变化以及完成js/sass/less/html/image/css/coffee等文件的语法检查. ...
- 基于Grunt构建一个JavaScript库
现在公认的JavaScript典型项目需要运行单元测试,合并压缩.有些还会使用代码生成器,代码样式检查或其他构建工具. Grunt.js是一个开源工具,可以帮助你完成上面的所有步骤.它非常容易扩展,并 ...
- 使用grunt构建seajs项目
1.安装nodejs 2.安装grunt-cli npm install -g grunt-cli 3.进入到项目目录,同时准备好package.json和Gruntfile.js文件 //packa ...
- Django 构建一个项目
一.创建django程序 终端命令:django-admin startproject fahaicmd IDE创建Django程序时,本质上都是自动执行上述命令 其他常用命令: python man ...
随机推荐
- poj 2229 DP
Sumsets Time Limit: 2000MS Memory Limit: 200000K Total Submissions: 15326 Accepted: 6088 Descrip ...
- Struts2学习笔记②
之前在跟着老师们做项目的时候经常会烦恼Struts.xml怎么配置,老师也没讲太清楚,都是说很简单,但是不懂的人就是太难了!哈哈,万事还是要靠自己的! struts.xml今天又看了几个小时的书,也跟 ...
- 485. Max Consecutive Ones
题目 Given a binary array, find the maximum number of consecutive 1s in this array. Example 1: Input: ...
- JSON对象操作
---string 转jsonObject JSONObject j = JSONObject.fromObject(str); JSONObject j = JSONObject.fromObjec ...
- 初用Linux, 安装Ubuntu16.04+NVIDIA387+CUDA8.0+cudnn5.1+TensorFlow1.0.1
因为最近Deep Learning十分热门, 装一下TensorFlow学习一下. 本文主要介绍安装流程, 将自己遇到的问题说明出来, 并记录自己如何处理, 原理方面并没有能力解释. 由于本人之前从来 ...
- js 判断是否为空对象、空数组
当需要判断参数是否为空时,总希望 js 能够提供原生的判断方法,可惜并没有,只能自己封装了. function isEmpty(obj) { // 检验 undefined 和 null if(!ob ...
- 浅谈HashMap的内部实现
权衡时空 HashMap是以键值对的方式存储数据的. 如果没有内存限制,那我直接用哈希Map的键作为数组的索引,取的时候直接按索引get就行了,可是地价那么贵,哪里有无限制的地盘呢. 如果没有时间限制 ...
- 【react-router】从Link组件和a标签的区别说起,react-router如何实现导航并优化DOM性能?
(注:参考自官方英文文档V3.X版本) react-router是伴随着react框架出现的路由系统,它也是公认的一种优秀的路由解决方案.在使用react-router时候,我们常常会使用其自带的路径 ...
- bootstrap-dialog插件的使用
官网文档:http://nakupanda.github.io/bootstrap3-dialog BootstrapDialog.show({ message: 'Hi Apple!', messa ...
- unity3d屏蔽Windows10输入法
在win10上,如果安装了某些输入法(比如QQ输入法),会造成unity的键盘事件被输入法捕获而不能触发的情况.只有将输入法切换到英文状态下才能响应键盘事件. 解决办法有, 1:用户主动切换输入法,甚 ...