1、准备工作

1)首页确保电脑上网,以及能够访问https://registry.npmjs.org/,因需从此网站中下载安装相应的插件;

2)电脑安装Node.js,Grunt及Grunt插件都是基于node.js运行的;如果你电脑上未装node.js,到nodejs官网https://nodejs.org/下载相应版本安装吧;

3)安装grunt-CLI,要想使用grunt,需要将grunt-CLI安装到全局环境中,使用nodejs的”npm install”进行安装;

打开控制台(windows系统下使用管理员权限打开),输入:npm install –g grunt-cli,然后敲击回车。

要检查是否已经安装grunt-cli并生效,只需输入grunt命令,敲击回车,如果出现下图结果,即表示你已成功安装grunt-cli。

2、创建一个简单的测试

在本机的项目目录中创建GruntTest目录(包括build,src,test,node_modules为安装插件时自动生成),两个文件(Gruntfile.js,package.json,注意第一个文件名首字母大写)。

其中package.json格式如下:

3、安装Grunt

从控制台中进入到刚才创建的目录中,输入以下命令:npm install grunt --save-dev(注意save前是两个-),其中--save-dev的意思是在安装grunt的同时,把grunt保存为这个目录的开发依赖项。这个依赖项的配置即为package.json中的devDependencies对应的配置。

grunt安装成功之后,在package.json文件中的devDependencies属性中会自动添加上"grunt": "^0.4.5"。目录中会自动创建node_modules文件夹,其中会有一个grunt的文件夹。

4、配置Gruntfile.js文件

首先把Gruntfile.js配置成如下格式:

}, build:{ src:'src/test.js',//原文件路径 dest:'build/js/<%=pkg.name%>-<%=pkg.version%>.min.js'//压缩后文件路径 } }, //CSS文件压缩 cssmin: { options: { shorthandCompacting: false, roundingPrecision: -1 }, target: { /*files: { 'output.css': ['foo.css', 'bar.css']//合并两个文件到一个文件 }*/ files: [{ expand: true, cwd: 'src/',//原文件目录 src: ['*.css', '!*.min.css'], dest: 'build/css',//压缩后文件目录 ext: '.min.css' }] } }, //JS文件错误提示 jshint:{ build:['Gruntfile.js','src/*.js'], options:{ jshintrc:'g.jshintrc' } }, watch: { scripts: { files: ['src/*.js','src/*.css'], tasks: ['jshint','uglify','cssmin'], options: { spawn: false } } } }); //告诉grunt我们将要加载的插件 grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-watch'); //告诉grunt当我们在终端中输入grunt时需要做哪些操作(注意先后顺序) grunt.registerTask('default',['jshint','uglify','cssmin','watch']); };

5、Grunt插件安装

进入grunt官网的插件列表页面 http://www.gruntjs.net/plugins ,我们能看到grunt到目前为止的所有插件。

插件分为两类。第一类是grunt团队贡献的插件,这些插件的名字前面都带有“contrib-”前缀,而且在插件列表中有星号标注。第二类是第三方提供的插件,不带有这两个特征。

  • Contrib-jshint——javascript语法错误检查;
  • Contrib-watch——实时监控文件变化、调用相应的任务重新执行;
  • Contrib-clean——清空文件、文件夹;
  • Contrib-uglify——压缩javascript代码
  • Contrib-copy——复制文件、文件夹
  • Contrib-concat——合并多个文件的代码到一个文件中
  • karma——前端自动化测试工具

安装插件命令为:npm install grunt-contrib-uglify --save-dev格式。

6、使用uglify插件

Uglify插件的功能就是压缩javascript代码。安装方式:npm install grunt-contrib-uglify --save-dev,安装成功之后package.json文件会自动添加相应配置,node_modules目录中也会创建相应的插件目录。

使用uglify来压缩javascript代码,首先在src目录中创建一个”test.js”

/**
* Created by Jack on 2015-10-20.
*/
(function(window,undefined){ function add(a,b){ return a+b; } add(10,20); })(window); function test(a,b,c){ return a+b*c; }

第一步:在Gruntfile.js中进行配置。

}, build:{ src:'src/test.js',//原文件路径 dest:'build/js/<%=pkg.name%>-<%=pkg.version%>.min.js'//压缩后文件路径 } }, //CSS文件压缩 cssmin: { options: { shorthandCompacting: false, roundingPrecision: -1 }, target: { /*files: { 'output.css': ['foo.css', 'bar.css']//合并两个文件到一个文件 }*/ files: [{ expand: true, cwd: 'src/',//原文件目录 src: ['*.css', '!*.min.css'], dest: 'build/css',//压缩后文件目录 ext: '.min.css' }] } }, //JS文件错误提示 jshint:{ build:['Gruntfile.js','src/*.js'], options:{ jshintrc:'g.jshintrc' } }, watch: { scripts: { files: ['src/*.js','src/*.css'], tasks: ['jshint','uglify','cssmin'], options: { spawn: false } } } }); //告诉grunt我们将要加载的插件 grunt.loadNpmTasks('grunt-contrib-uglify'); grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.loadNpmTasks('grunt-contrib-jshint'); grunt.loadNpmTasks('grunt-contrib-watch'); //告诉grunt当我们在终端中输入grunt时需要做哪些操作(注意先后顺序) grunt.registerTask('default',['jshint','uglify','cssmin','watch']); };

对uglify的配置有两项:

  “options”中规定允许生成的压缩文件带banner,即在生成的压缩文件第一行加一句话说明。注意,其中使用到了pkg获取package.json的内容。

  “build”中配置了源文件和目标文件。即规定了要压缩谁?压缩之后会生成谁?注意,我们这里将目标文件的文件名通过pkg的name和version来命名。

(PS:上文中说过的package.json的内容终于找到了他被应用的地方了。这样的好处是:例如,对文件版本的管理,你只需要在package.json中修改即可,grunt会自动根据最新的版本号生成相应版本的文件。你不用手动去修改文件的文件名。)

第二步:在 grunt.initConfig 方法之后,要让grunt去加载这一个插件。光配置了,不加载上,如何用啊?

grunt.loadNpmTasks('grunt-contrib-uglify');

第三步:在grunt命令执行时,要不要立即执行uglify插件?如果要,就写上,否则不写。我现在是需要的,所以我写上。也有可能不需要,这种情况谁知道呢?
grunt.registerTask('default',['uglify']);

7、其它插件

如果使用其它插件,可先进行安装,然后进行配置,加载插件,注册任务插件。具体使用说明可进入http://www.gruntjs.net/plugins网站中点击相应的插件查看相应的配置说明。

使用Grunt构建自动化开发环境相关推荐

  1. 构建一个基本的前端自动化开发环境 —— 基于 Gulp 的前端集成解决方案(四)

    构建一个基本的前端自动化开发环境 -- 基于 Gulp 的前端集成解决方案(四) 参考文章: (1)构建一个基本的前端自动化开发环境 -- 基于 Gulp 的前端集成解决方案(四) (2)https: ...

  2. 0基础用vagrant 快速构建larval开发环境 (我杨某人尽力描述了,都有从0介绍)

    vagrant 快速构建larval开发环境 历史背景 今天闲来无事又从头写了一遍,这玩意能干嘛?从0开始,5分钟自动化部署larval框架项目(取决于你网速),无论是windows,mac,linu ...

  3. XamarinForms教程构建XamarinForms开发环境

    构建XamarinForms开发环境 所谓Xamarin.Forms的开发环境,就是指在基本硬件和数字软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件,简称SDE.对于任何的程 ...

  4. Vagrant 构建 Linux 开发环境

    Vagrant 是一个简单易用的部署工具,用英文说应该是 Orchestration Tool .它能帮助开发人员迅速的构建一个开发环境,帮助测试人员构建测试环境, Vagrant 基于 Ruby 开 ...

  5. 大数据开发教程——构建Hadoop开发环境

    什么是Hadoop ? Hadoop是由 Apache 基金会开发和维护的一个开源的分布式计算和存储框架. Hadoop 为庞大的计算机集群提供可靠的.可伸缩的应用层计算和存储支持,它允许使用简单的编 ...

  6. React教程(六)——使用 create-react-app 快速构建 React 开发环境

    1.create-react-app是什么? 做一个react项目,构建其开发环境对初学者来说是很困难的!所以,facebook专门出了create-react-app命令,用于react项目开发环境 ...

  7. Win10-Ubuntu子系统构建ESP8266_RTOS_SDK开发环境

    陈拓 2021/01/16-2021/01/20 1. 概述 ESP8266的开发环境是在linux系统下构建的.树莓派的官方操作系统就是Linux系统,在<树莓派安装ESP8266_SDK开发 ...

  8. java jse_Java构建JSE开发环境教程

    Java构建JSE开发环境教程 引导语:你们知道如何运用Java构建JSE开发环境吗,以下是百分网小编分享给大家的Java构建JSE开发环境教程,欢迎参考学习! 构建JSE开发环境 学习 Java 开 ...

  9. 构建JSE 开发环境(图文并茂)

    前言 学习 Java 程序设计,同样需要方便易用的开发工具.Java 的开发工具很多,而且各有优缺点,初学者往往不知道有哪些常用的开发工具,或者由于面临的选择比较多而产生困惑. 要建立 Java 开发 ...

最新文章

  1. HarmonyOS 设置图标在Text 旁边
  2. igraph 算网络指标_量化投资中,计算技术指标时常见的8个坑
  3. linux开机自动启动(自启动)脚本、程序(初始化脚本)(海康摄像头自启动程序)
  4. 若依前后端分离版怎样根据数据库生成代码并快速实现某业务的增删改查
  5. 正则环视 php,正则表达式基本知识(php)
  6. linux脚本登录启动失败,linux-从bash脚本启动进程失败
  7. Redis缓存穿透、缓存雪崩、并发问题分析与解决方案
  8. 编程猫海龟编辑器python_编程猫海龟编辑器
  9. Hive去重最佳方法
  10. (C++)虚函数表解析(转)
  11. 基于Qt的抽奖小程序
  12. 基于bim的施工管理平台
  13. windows便签快捷键_超级实用的Windows快捷键
  14. Redis入门完整教程:CacheCloud快速部署
  15. 极客空间-MySQL实战45天-第四天
  16. 计算机网络感知层,物联网感知层与感知节点
  17. java导出格式与拓展名不一致_ASP.NET导出Excel打开时提示:与文件扩展名指定文件不一致解决方法...
  18. 北漂IT男返乡2年的三线楼市观察(宜昌夷陵篇)-原创
  19. 猫哥教你写爬虫 022--类与对象(下)
  20. 如何用好示波器?资深工程师也会忽略这些细节……

热门文章

  1. linux创建文件内容三行,shell之创建文件及内容的方法示例
  2. php写好程序后需要嵌套,什么是PHP嵌套函数?
  3. syslog 向内存中缓存_动画:深入浅出从根上理解 HTTP 缓存机制及原理!
  4. db2 空值转换函数_Hive常见函数的使用
  5. VS中Debug和Release版本的区别
  6. Spring BPP中优雅的创建动态代理Bean 1
  7. c/c++多线程模拟系统资源分配(并通过银行家算法避免死锁产生)
  8. java中并不是任意多个接口都可以实现多实现
  9. 蓝牙耳机声音一顿一顿的_线控耳机党阵地转移成功,OPPO这款TWS耳机体验满分...
  10. curl 的用法指南