闲话和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部分。

  1. wrapper

    module.exports = function(grunt) {
      // 所有的代码写在这里,注意传入参数grunt
    };
  2. 任务配置

    grunt.initConfig({
        concat: {},
        cssmin: {},
        uglify: {}
    });
  3. 加载插件

    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
  4. 自定义任务

    grunt.registerTask(‘default‘, [‘concat‘, ‘cssmin‘, ‘uglify‘]);

    执行grunt时默认执行default任务,如果这个部分缺失,则需要使用下列命令分别执行第2部分中注册的任务

    grunt concat
    grunt cssmin
    grunt uglify

以上是grunt的入门部分,官网相对更加详尽,下一篇简述下Gruntfile.js中task的配置规则。

  

时间: 2024-11-05 12:27:54

闲话和grunt的相关文章

没有闲话和grunt.initConfig()

grunt.initConfig()为Gruntfile.js的核心部分,它接收对象作为参数. 对象包含两种类型的属性,一种是单纯的变量,一种是task类型.举个栗子: grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), //单纯的变量,像我一样单纯 concat: {} //task类型 }); PS:所有单纯的变量可以'prefix<%=var%>suffix'的形式读取 task类型也包含两种类型的属性,一种是opti

闲话js前端框架(1)——从avalonjs的模板说起

闲话js前端框架 前端人员=美工+设计+代码+测试 --题记 专题文章: 一.从avalonjs的模板说起 二.庞大的angularjs 三.再也不想碰DOM 四.组件化?有没有后端的事? 五.再看自己一年前设计的微型渲染引擎 六.在浏览器标准上做文章 七.抛开浏览器,构建应用容器 八.为何Flash.银光和Java都在网页端一蹶不振 本文属 西风逍遥游 原创, 转载请注明出处: 西风世界 http://blog.csdn.net/xfxyy_sxfancy 一.从avalonjs的模板说起 我

AngularJS——grunt神器的安装

前言: 刚开始学 angularJS,在慕课网上看的大漠老师的视频(http://www.imooc.com/learn/156),里面刚开始讲述了前端开发-调试-测试所使用的手段和工具,本人对前端开发也是一知半解,看来大漠老师的课之后,才发现我以前开发的时候天天被一个项目给拖了很久原来是因为我没有找到好的方法.在此,希望能看到这篇博客的道友们能去看看这视频,特别是对于半路出家的道友,起到的作用是很大的. 好了闲话少说,刚刚也算是给慕课网店打了广告了,这节主要说的是能帮组我们处理一些额外任务(压

grunt 入门学习

前端工作流,Grunt上手指南 Posted@2013-04-20 7:15 a.m. CategoriesGrunt ,  javascript 我想先花点时间回忆一下作为一个前端需要做的工作(Loading...) JS合并 JS压缩 CSS压缩 CSS Sprite 图片优化 测试 静态资源缓存(版本更新) ... 对应的,一个全副武装的前端可能会是这样的: JSHint CSSLint Jade CoffeeScript RequireJS/SeaJS Compass/Stylus/Le

grunt使用心得

这是我在使用前端构建工具grunt的一些总结,希望对大家有一定的帮助,也希望大家一起讨论一起进步. http://cobish.github.io/%E5%89%8D%E7%AB%AF/2015/06/28/grunt-use.html

Grunt的wiredep任务的配置说明文档

Automatically inject Bower components into the HTML file 自动把Bower的组件注入到HTML文件中 如果我们通过以下方式安装组件 bower install jquery --save bower install sea.js --save 安装后会在bower.json文件中看到 { "name": "framework-demo", "private": true, "dep

grunt之easy demo

首先安装grunt-cli cnpm install -g grunt-cli 接下来创建package.json,内容如下 {        "name": "demo",        "file": "zepto",        "version": "0.1.0",        "description": "demo",       

grunt默认只允许localhost和访问,如何设置外部IP地址访问

使用Yeoman生成器创建web项目,使用grunt server启动,默认访问地址为127.0.0.1:9000或者localhost:9000 如果用本机地址如:192.168.1.100:9000访问默认是访问不到的 想要通过IP地址访问需要修改Gruntfile.js的配置: 修改connect节点配置,原本的配置如下: 可以看到hostname上面有注释,大概意思是:将地址改为'0.0.0.0'可从外部访问. 修改成下图,我们的grunt server就可以从外部访问啦!

【grunt】两小时入门

目录: 1. 用途和场景 2.Grunt插件 3.相关资源 4.环境安装 5.开始学习 5.1 一个新项目 5.2 生成package.json 5.3 在项目中安装grunt和相关插件 5.4 Gruntfile语法 5.4.1 配置任务 5.4.2 加载插件 5.4.3 注册任务 5.5 为我们的项目配置gruntfile.js 5.6 执行任务 6.后续学习 1. 用途和场景 jshint代码检查 代码合并 代码压缩--js/css/html都可以 SASS/LESS编译css watch