Grunt实践之简易教程

以前自己太low了,都没用过高大上的前端自动化打包工具,开发方式也是偏传统的。加入到新的团队后得拼命赶上啊,前端技术更迭太快,各种技术层出不穷,智商都快不够用了。看人家都用的牛逼哄哄的技术,自己还守着

那点小白技术就说不过去了,所以有些环境逼着你进步,有些环境是让你不知不觉就堕落了。不扯淡了,开始学习吧。

1、Grunt的安装

Grunt依赖Nodejs环境,所以安装前需要安装nodejs,至于怎么安装有很多教程,有一键安装的安装包,安装过程比较容易。这里加入已经安装好了Nodejs,

在CMD中输入命令即可安装Grunt,容易吧。

npm install -g grunt-cli

2、新建一个Grunt项目

新建一个文件名,名称随便定,我这里就取的grunt_test。在该文件下新建2个文件,一个是package.json,一个是Gruntfile.js,一般来说这两个文件是必须的。

package.json:

{
  "name": "grunt_test",
  "version": "0.1.0",
  "devDependencies": {
    "grunt": "~0.4.0",
    "grunt-contrib-sass": "*",
    "grunt-contrib-clean": "latest",
    "grunt-contrib-concat": "latest",
    "grunt-contrib-requirejs": "latest",
    "grunt-contrib-htmlmin": "latest",
    "grunt-contrib-cssmin": "latest",
    "grunt-contrib-copy": "latest",
    "grunt-usemin": "latest",
    "grunt-contrib-uglify": "*",
    "grunt-contrib-watch": "*",
    "grunt-cssc": "*",
    "grunt-htmlhint": "*",
    "matchdep": "*"
  },
  "main": "main.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "huzhao",
  "license": "ISC"
}

name是你的grunt项目名称,不是开发的项目名称哈。devDependencies字面意思就是依赖嘛,Grunt有很多插件,很多流程的实现都依赖插件,devDependencies就是把你需要的插件列出来。

3、下载插件

package.json中列出了很多插件,使用时需要把他们下载下来,进入你的grunt项目内,在命令中输入:

npm --install

上面命令会把需要的插件下载到本地,这个时候grunt项目里就多了很多文件。

4、Gruntfile.js

基本所有的实现都在该文件里了,所以是最重要的。

module.exports = function(grunt) { // Do grunt-related things in here };

这是一个容器,所有的内容方法必须写在里面。

初始化:

grunt.initConfig({
  pkg: grunt.file.readJSON(‘package.json‘),
  uglify: {
    options: {
      banner: ‘/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n‘
    },
    build: {
      src: ‘src/<%= pkg.name %>.js‘,
      dest: ‘build/<%= pkg.name %>.min.js‘
    }
  }
});
pkg加载package.json,读取里面的内容。
uglify是一个压缩js的插件,把源文件压缩成目标文件。
// 加载能够提供"uglify"任务的插件。
grunt.loadNpmTasks(‘grunt-contrib-uglify‘);

自定义任务:

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

默认是default,即你在grunt项目里打开命令窗口输入:grunt就能运行了,这里也可以改成别的名称,通常是对应开发的项目名称,比如grunt_project,那么运行的时候就输入:grunt grunt_project。

简易的完整代码:

module.exports = function(grunt) {

  grunt.initConfig({
    pkg: grunt.file.readJSON(‘package.json‘),
    concat: {
      options: {
        separator: ‘;‘
      },
      dist: {
        src: [‘src/**/*.js‘],
        dest: ‘dist/<%= pkg.name %>.js‘
      }
    },
    uglify: {
      options: {
        banner: ‘/*! <%= pkg.name %> <%= grunt.template.today("dd-mm-yyyy") %> */\n‘
      },
      dist: {
        files: {
          ‘dist/<%= pkg.name %>.min.js‘: [‘<%= concat.dist.dest %>‘]
        }
      }
    }
  });

  grunt.loadNpmTasks(‘grunt-contrib-uglify‘);
  grunt.loadNpmTasks(‘grunt-contrib-concat‘);
  grunt.registerTask(‘default‘, [‘concat‘, ‘uglify‘]);

};
 
				
时间: 2024-10-01 06:10:40

Grunt实践之简易教程的相关文章

JavaScript简易教程

这是我所知道的最完整最简洁的JavaScript基础教程. 这篇文章带你尽快走进JavaScript的世界--前提是你有一些编程经验的话.本文试图描述这门语言的最小子集.我给这个子集起名叫做"JavaScript简易教程",并推荐准备深入阅读细节和高级技巧之前的新手阅读.心急吃不了热豆腐.文章的最后提出如何进一步学习. 警告:下面是我所描述的规则集和最佳实践.我喜欢整洁清晰(例如,你可以随时通过下面的目录快速导航).规则是无懈可击的,但不可避免--每个人的理解不同. 目录 1. 本文约

mocha单元测试简易教程

mocha单元测试简易教程 写在前面 其实mocha单元测试的教程网上有很多,也都很简单易懂,但是每个人对同一份的教程也会产生不同的理解,像我这种大概就是走遍了所有弯路才到达终点的人,想通过给大家分享一下自己的实践过程,希望有人能从我这得到收获 教程参考 nodejs详细安装步骤 测试框架 Mocha 实例教程 mocha测试简单使用; 廖雪峰的javascript 安装 以下安装文件大小都在10-20M之间,您可以快速的完成安装过程 Node.js 因为mocha安装依赖Node,所以在下载m

BIND简易教程(1):安装及基本配置

首先,为什么说是简易教程呢?因为BIND的功能实在太多,全写出来的话要连载好久,我觉得我没有那么多精力去写:而我了解的仅仅是有限的一点点,不敢造次.百度上的文章也是一抓一大把呐!所以,教点基本使用方法,有需求的同学可以再翻翻BIND管理员手册.那么,还是直接开始说正题吧.本次还是像PowerDNS一样是一个连载,写三篇. 目录:BIND简易教程(1):安装及基本配置(本篇)BIND简易教程(2):BIND视图配置(待续)BIND简易教程(3):DNSSec配置(待续) 首先说说安装.安装是非常简

Emacs简易教程

Emacs简易教程阅读: 命令: $emacs 进入之后,输入: C-h t 这里,C-h表示按住[Ctrl]键的同时按h ####### 20090620 *退出: 输入“C-x C-c” *撤销: 输入"C-x u" 或输入"C-_" 这里,"C-_"比较好输入一些(好像C--也行),但是有的键盘上面没有"_"就只能输入“C-x u”了,撤销动作能进行20次. *向上翻页: 输入"M-v" 这里,右手的

CCS2.2基于软件仿真简易教程(汇编)

CCS2.2基于软件仿真简易教程(汇编) Rev 1.0 Writer Nirvana Silence 配置目标芯片 打开此图标 导入配置,生成gel文件,导入点击close 然后关闭 保存changes 启动工程软件 新建工程.asm文件,添加到工程 新建文件 保存为汇编格式 添加到工程 编写程序,编译程序,load程序 在新建的ASM文件中输入以下程序,查看运行后(1030H).(1040H).*AR3,AR4的值 记得助记符前面至少要有一个空格 编译 没有问题,load .out文件 打开

getopts简易教程(Small getopts tutorial)译文(未完成)

getopts简易教程 当你想用一种专业的方式解析命令行参数时,getopts就是要选择的工具.和它的旧版本兄弟命令getopt不同(注意没有s!),getopts是shell内置命令.高级地方表现在 你不需要通过一个外部命令传递参数 getopts可以很容易的设置一些你能用于解析参数的变量(对于一个外部程序来说这是不可能的!) 你不必再处理过去一些使用getopt时的一些bug实现(空格, -) getopts已经在POSIX?定义 一些其他解析位置参数的其他方法(不用getopt(s))在这

Android实战简易教程-第四十枪(窃听风云之短信监听)

近期在做监听验证码短信自己主动填入的功能,无意间想到了一个短信监听的办法. 免责声明:短信监听本身是一种违法行为,这里仅仅是技术描写叙述.请大家学习技术就可以.(哈哈) 本实例是基于bmob提供的后台服务,将监听到的短信自己主动上传到bmob数据库中. 一.代码实现: 1.首先实现javabean对象. package com.example.messagecut; import cn.bmob.v3.BmobObject; public class MsgContent extends Bmo

移动开发之【微信小程序】的原理与权限问题以及相关的简易教程

这几天圈子里到处都在传播着这样一个东西,微信公众平台提供了一种新的开放能力,开发者可以快速开发一个小程序,取名曰:微信公众平台-小程序 据说取代移动开发安卓和苹果,那这个东东究竟是干吗用的?但很多人觉得是网页版应用. 有的人很鸡冻,但是--最后文章会提及具体的权限开放问题,所以,还是保持一颗冷静的?比较好. 那我们先来看看组件和API开放了哪些服务: 视图容器:视图(View).滚动视图.Swiper 基础内容:图标.文本.进度条 表单组件:按钮.表单等等 操作反馈 导航 媒体组建:音频.图片.

BIND简易教程(2):BIND视图配置

目录:BIND简易教程(1):安装及基本配置BIND简易教程(2):BIND视图配置(本篇)BIND简易教程(3):DNSSec配置 上文书说到,我们把aaa.apple.tree解析到192.168.4.100.那么世界上任何一个人在请求aaa.apple.tree的时候,解析到的都是这个IP地址,之后,再访问这个域名(当然这个IP地址只是实验的,而且我域名也没注册,除了我内网之外,世界上任何一个人都访问不到).那么问题来了,两个人一个在电信,一个在联通,都想访问这个域名的话,我的服务器要放在