闲话和grunt
一年半没更新是因为自己转岗了,android framework+system转前端,可以想象过程之苦逼,苦成了一首诗:很烦很烦/非常烦/非常非常十分烦/特别烦特烦/极其烦/贼烦/简直烦死了/啊——。烦之余秉承人丑多看书的古训,啃书无数,成笔记百余篇,不成体系。每每回想,总是忘却了大多数,于是要整理一下,如趁尚未排泄出去要反刍几口,回味一下。
整理自是从近及远整理,所以随笔内容应该是由难到易,自顾自说,完全不考虑旁观人士。
开始。
最近在看grunt,说简单点就是个前端管理工具,如maven、ant之于java。放在一年半前,我会说“前端工程还需要管理?”,在经历了对QA无数次“JS没更新、你Ctrl+F5刷新一下嘛”,对运营“又要压缩?我一个一个文件压缩很累的”,对PL“这文件夹下都100多个文件了,没分类,还好多重构后废弃的”之后,我终于感觉到,前端还是需要管理的。
grunt是什么?是一个运行在node上的插件,所以要运行grunt先要把node的环境搭建好。
grunt能做什么?合并,压缩,混淆,编码重命名,修改html中的引用,甚至于语法检测、单元测试等等。
这样说是没有概念的,首先全局安装grunt-cli
npm install -g grunt-cli
现在你就可以使用grunt这个命令了,但这是米有意义的,因为grunt-cli的功能是调用当前目录下的grunt模块,本身不具备任何功能。也就是说grunt是局部安装的,这样不同的项目可以使用不同版本的grunt。
好了,现在要新建一个文件夹,进入然后执行
npm init //按指示生成package.json,如果单纯测试grunt,这个文件是可以缺失的
npm install grunt --save-dev //安装并保存依赖到package.json
再次执行grunt会提醒Gruntfile.js文件的缺失,这是grunt所有行为的入口,所以要新建Gruntfile.js文件,这个文件的结构分为4部分。
- wrapper
module.exports = function(grunt) {
// 所有的代码写在这里,注意传入参数grunt
}; - 任务配置
grunt.initConfig({
concat: {},
cssmin: {},
uglify: {}
}); - 加载插件
grunt.loadNpmTasks('grunt-contrib-concat'); //前提是使用npm install grunt-contrib-concat --save-dev
grunt.loadNpmTasks('grunt-contrib-cssmin');
grunt.loadNpmTasks('grunt-contrib-uglify');这个部分可被load-grunt-tasks替代,在wrapper第一行进行配置
require('load-grunt-tasks')(grunt); //速度较慢,同样需要install
- 自定义任务
grunt.registerTask('default', ['concat', 'cssmin', 'uglify']);
执行grunt时默认执行default任务,如果这个部分缺失,则需要使用下列命令分别执行第2部分中注册的任务
grunt concat
grunt cssmin
grunt uglify
以上是grunt的入门部分,官网相对更加详尽,下一篇简述下Gruntfile.js中task的配置规则。
闲话和grunt的更多相关文章
- 没有闲话和grunt.initConfig()
grunt.initConfig()为Gruntfile.js的核心部分,它接收对象作为参数. 对象包含两种类型的属性,一种是单纯的变量,一种是task类型.举个栗子: grunt.initConfi ...
- AngularJS——grunt神器的安装
前言: 刚开始学 angularJS,在慕课网上看的大漠老师的视频(http://www.imooc.com/learn/156),里面刚开始讲述了前端开发-调试-测试所使用的手段和工具,本人对前端开 ...
- grunt之concat、cssmin、uglify
周末有点懒,跑去看了<智取威虎山>,手撕鬼子的神剧情节被徐老怪一条回忆线就解释过去了,牛到极致尽是这种四两拨千斤的处理方式,手撕加分,四星推荐. --------------------- ...
- 使用grunt实现自动化单元测试
闲话不多说~ 使用步骤 1.安装插件 npm install grunt-contrib-qunit --save-dev 2.加载包含 "qunit" 任务的插件 grunt.l ...
- 初学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放到项目中,我们不得不顾及到一个问题——项目 ...
随机推荐
- 解决lxml不含etree模块导致scrapy startproject ***出错
本文环境:win10(64) python3.6(64) 背景:之前已成功安装scrapy(1.4.0),但在命令行敲 scrapy startproject ***出错,错误提示:from ... ...
- 超超超简单的bfs——POJ-1915
Knight Moves Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 26102 Accepted: 12305 De ...
- 用python语言编写网络爬虫
本文主要用到python3自带的urllib模块编写轻量级的简单爬虫.至于怎么定位一个网页中具体元素的url可自行百度火狐浏览器的firebug插件或者谷歌浏览器的自带方法. 1.访问一个网址 re= ...
- 一个普通的 Zepto 源码分析(二) - ajax 模块
一个普通的 Zepto 源码分析(二) - ajax 模块 普通的路人,普通地瞧.分析时使用的是目前最新 1.2.0 版本. Zepto 可以由许多模块组成,默认包含的模块有 zepto 核心模块,以 ...
- Sublime Text3快捷键
Ctrl+D 选词 (反复按快捷键,即可继续向下同时选中下一个相同的文本进行同时编辑)Ctrl+G 跳转到相应的行Ctrl+J 合并行(已选择需要合并的多行时)Ctrl+L 选择整行(按住-继续选择下 ...
- 简析SNS社交系统"ThinkSNS V4"与"ThinkSNS+"的区别
ThinkSNS是什么? ThinkSNS(简称TS),一款全平台综合性sns社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+(简称TS+),也称 ...
- vs2012中自带IIS如何让其他电脑访问
在一些场景中,我们需要让其他电脑或者说模拟器访问我们的服务进行调试,而vs2012自带的iis Express启动的程序其他设备是不能访问,iis express启动的程序路径是http://loca ...
- 如何在GitHub上生成ssh公钥并用NetBeans克隆项目
一.生成ssh公钥. 1.首先判断本机是否创建了公有密钥: $ ls ~/.ssh 这个命令用于检查是否已经存在 id_rsa.pub 或 id_dsa.pub 文件,如果文件已经存在,下面步骤可省略 ...
- css3类选择器之结合元素选择器和多类选择器
css3类选择器之结合元素选择器和多类选择器用法: <!DOCTYPE html> <html lang="en"> <head> <me ...
- css文本样式及控制文本的大小写
常用文本样式如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...