以前自己太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']); };
 
												

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

  1. JavaScript简易教程(转)

    原文:http://www.cnblogs.com/yanhaijing/p/3685304.html 这是我所知道的最完整最简洁的JavaScript基础教程. 这篇文章带你尽快走进JavaScri ...

  2. Intellj IDEA 简易教程

    Intellj IDEA 简易教程 目录 JDK 安装测试 IDEA 安装测试 调试 单元测试 重构 Git Android 其他 参考资料 Java开发IDE(Integrated Developm ...

  3. Android开发简易教程

    Android开发简易教程 Android 开发因为涉及到代码编辑.UI 布局.打包等工序,有一款好用的IDE非常重要.Google 最早提供了基于 Eclipse 的 ADT 作为开发工具,后来在2 ...

  4. Flow简易教程——安装篇

    .mydoc_h1{ margin: 0 0 1em; } .mydoc_h1_a{ color: #2c3e50; text-decoration: none; font-size: 2em; } ...

  5. JavaScript简易教程

    这是我所知道的最完整最简洁的JavaScript基础教程. 这篇文章带你尽快走进JavaScript的世界——前提是你有一些编程经验的话.本文试图描述这门语言的最小子集.我给这个子集起名叫做“Java ...

  6. 文科妹学 GitHub 简易教程(转)

    文科妹学 GitHub 简易教程     #什么是 Github ?必须要放这张图了!!! Git 是由 Linux 之父 Linus Tovalds 为了更好地管理linux内核开发而创立的分布式版 ...

  7. WebGL简易教程——目录

    目录 1. 绪论 2. 目录 3. 资源 1. 绪论 最近研究WebGL,看了<WebGL编程指南>这本书,结合自己的专业知识写的一系列教程.之前在看OpenGL/WebGL的时候总是感觉 ...

  8. mocha单元测试简易教程

    mocha单元测试简易教程 写在前面 其实mocha单元测试的教程网上有很多,也都很简单易懂,但是每个人对同一份的教程也会产生不同的理解,像我这种大概就是走遍了所有弯路才到达终点的人,想通过给大家分享 ...

  9. 生活科技两相宜:(一)Win7使用微软SkyDrive网盘简易教程

    今天得写一个Win7使用微软SkyDrive网盘的简易教程,主要是给我老婆看,顺便贴出来给大家共享一下:)    使用微软SkyDrive网盘有两个层次.一个是使用网页版,这个跟使用163或者QQ网盘 ...

随机推荐

  1. Eclipse Java SE升级Java EE

    网上教程大多是提供了“http://download.eclipse.org/releases/ganymede/”地址,但是实际更新过程中会报错. 大致查询了一下,很可能是版本不匹配的问题,正确的更 ...

  2. 如何判断一个对象实例是不是某个类型,如Cat类型

    <script> function cat(){} var b = new cat(); if(b instanceof cat){ console.log("a是cat&quo ...

  3. Jmeter Grafana Influxdb 环境搭建

    1.软件安装 1.Grafana安装 本文仅涉及Centos环境 新建Grafana yum源文件 /etc/yum.repos.d/grafana.repo [grafana] name=grafa ...

  4. Shiro入门资源整理

    学习一个框架,查阅权威有效的资料能够事半功倍,本文收集笔者学习此框架中帮助很大的文档,希望对大家有所帮助. 对于文档类的,强烈建议看官方文档,而不是百度出来的经过网友加工或者搬运过来的资料!! shi ...

  5. 关于tp5全局过滤

    在config里面. // 默认全局过滤方法 用逗号分隔多个'default_filter' => 'htmlspecialchars',

  6. 关于锚点定位,ul设置fixed后,div被覆盖一部分的问题

    例如: 问题: 刚开始的时候 .ul是正常显示的,当页面的滚动条滚动到一定的高度是 ,ul就被设置为 position:fixed:那么 点击 li相对应div就会被 固定定位的ul覆盖住一部分. 解 ...

  7. SpringBoot 整合 slf4j 日志打印

    划水时间,记录一下用到的相关slf4j 日志打印,如何实现配置输出.本地保存log日志文件... 我使用的是SpringBoot框架,slf4j 类库已经包含到了 SpringBoot 框架中,所有, ...

  8. 读取P12格式证书的密钥

    不想存储p12证书内容,只想存储证书密钥,可通过以下实现读取证书的密钥出来: package com.zat.ucop.service.util; import org.apache.commons. ...

  9. RMQ(求区间最值问题)

    学习博客:https://blog.csdn.net/qq_31759205/article/details/75008659 RMQ(Range Minimum/Maximum Query),即区间 ...

  10. Vue vs React: Javascript 框架之战

    https://baijiahao.baidu.com/s?id=1608210396818353443&wfr=spider&for=pc    原文档 正如我们之前提到的,Word ...