Grunt可以执行像压缩, 编译, 单元测试, 代码检查以及打包发布的任务。

本文介绍使用Grunt实现nodejs程序自启动功能。

目录:

  1. Grunt介绍
  2. Grunt安装
  3. Grunt使用
  4. Grunt常用加载任务的插件:

    1)grunt-contrib-watch

    2)grunt-nodemon

    3)grunt-concurrent

1.Grunt介绍

  Grunt是一个自动化的项目构建工具. 如果你需要重复的执行像压缩, 编译, 单元测试, 代码检查以及打包发布的任务. 那么你可以使用Grunt来处理这些任务, 你所需要做的只是配置好Grunt, 这样能很大程度的简化你的工作.

如果在团队中使用Grunt, 你只需要与其他人员约定好使用Grunt应该规避的问题, 就能够很方便的自动化的处理大部分的常见工作任务, 你所付出的努力几乎为0.

1.Grunt安装

我目录下的文件(使用express  -e test新建的一个项目)

Grunt和Grunt插件都是通过npm, Node.js包管理器安装和管理的

我的系统环境:

  • win7 64bit
  • nodejs:6.3.1
  • npm:3.10.3

本地安装grunt

后面加上 --save-dev,可以直接把grunt作为devDependencies写入的package.json中

安装完grunt后,还需要安装一个grunt插件:grunt-cli,为什么需要grunt-cli这个模块,有了grunt-cli,你可以在项目的任意子目录中运行grunt 。

grunt-cli的工作原理:每次运行grunt 时,他就利用node提供的require()系统查找本地安装的 Grunt。正是由于这一机制,你可以在项目的任意子目录中运行grunt 。如果找到一份本地安装的 Grunt,CLI就将其加载,并传递Gruntfile中的配置信息,然后执行你所指定的任务。

grunt-cli需要全局安装的原因:当执行grunt命令时,会默认先去全局的grunt-cli下找grunt-cli模块,而不会先走当前目录下的node_modulesgrunt-cli

此时执行grunt,会报如下错误:

实际上grunt运行,依赖package.json和Gruntfile.js两个文件,项目初始化时,已经生成了package.json文件,这里还缺少Gruntfile.js文件

新建Gruntfile.js文件:

再次运行grunt:

没有报错,但是提示默认的任务没有找到,这是因为我们在Gruntfile.js文件中没有添加任务,包括默认任务。

gurnt的自启动实现,需要三个加载任务的插件:

他们的安装方式如下:

 npm install grunt-contrib-watch  --save-devnpm install grunt-nodemon  --save-devnpm install grunt-concurrent --save-dev

安装完的package.js文件如下:

{"name": "test","version": "0.0.0","private": true,"scripts": {"start": "node ./bin/www"},"dependencies": {"body-parser": "~1.15.1","cookie-parser": "~1.4.3","debug": "~2.2.0","ejs": "~2.4.1","express": "~4.13.4","morgan": "~1.7.0","serve-favicon": "~2.3.0"},"devDependencies": {"grunt": "^1.0.1","grunt-concurrent": "^2.3.1","grunt-contrib-watch": "^1.0.0","grunt-nodemon": "^0.4.2"}
}

grunt、grunt-concurrent、grunt-contrib-watch、grunt-nodemon模块名分别存放在devDependencies下。
grunt-concurrent:针对慢任务的插件,优化慢任务
grunt-contrib-watch:可以监控特定的文件,在添加文件、修改文件、或者删除文件的时候自动执行自定义的任务,比如 livereload 等等
grunt-nodemon:实时监听入口文件(app.js),入口文件出现改动,就会自动重启下面来编写Gruntfilr.js文件
module.exports = function(grunt){grunt.initConfig({watch:{ejs:{files:['views/*'],options:{livereload:true}},js:{files:['public/javascripts/*'],//        tasks:['jshint'],
                options:{livereload:true}}},nodemon:{dev:{options:{file:'app.js',args:[],ignoredFiles:['node_modules/**','DS_store'],watchedExtensions:['js'],watchedFolders:['./'],debug:true,delayTime:1,env:{PORT:3000},cwd:__dirname}}},concurrent:{tasks:['nodemon','watch'],options:{logConcurrentOutput:true}}});grunt.loadNpmTasks('grunt-contrib-watch');  //只要有文件修改,增加删除,就会重新执行grunt.loadNpmTasks('grunt-nodemon');    //实时监听入口文件(app.js),入口文件出现改动,就会自动重启grunt.loadNpmTasks('grunt-concurrent'); //针对慢任务的插件,优化慢任务
grunt.option('force',true);grunt.registerTask('default',['concurrent']);
}

上述livereload:true,表示监听的文件被修改以后,自动刷新页面。

再次运行grunt:

启动成功!!!!

打开app.js文件,随便敲几个空格并保存之后,看到控制台有如下变化:

 
 
 

转载于:https://www.cnblogs.com/y-yxh/p/5808566.html

grunt集成自动启动相关推荐

  1. grunt + bower

    Grunt+Bower的简单应用 前言 首先要感谢那些知名的不知名的前辈们,你们的成就是我们进步的基础. 本文针对的读者是那些像之前的我一样刚刚了解Grunt和Bower这两个名字是什么,但还不知道究 ...

  2. WebStorm 10支持TypeScript 1.4到JavaScript的实时编译

    JetBrains WebStorm 10支持在编辑代码的同时将TypeScript 1.4代码编译为JavaScript.新版本增加了对联合类型.模块.修饰符以及let和const关键字的支持.它还 ...

  3. 【译】前端开发者的基本要求

    原文链接:http://rmurphey.com/blog/2012/04/12/a-baseline-for-front-end-developers/ 前几天我为一个项目写README文档,我希望 ...

  4. 这周在我们的雷达上:僵尸和UX Gaffes

    Welcome to On Our Radar, a weekly round-up of news, trends and other cool stuff from the world of we ...

  5. 浅谈前端自动化构建 -- Grunt、Gulp、FIS

    前言 笔记来源:拉勾教育 大前端高薪训练营 阅读建议:内容较多,建议通过左侧导航栏进行阅读 前端自动化构建 基本介绍 一切重复工作本应自动化.将开发中的源代码,自动化的转换成生产环境中可以运行的程序, ...

  6. Docker+Jenkins持续集成环境(1)使用Docker搭建Jenkins+Docker持续集成环境

    本文介绍如何通过Jenkins的docker镜像从零开始构建一个基于docker镜像的持续集成环境,包含自动化构建.发布到仓库\并部署上线. 0. 前置条件 服务器安装docker,并启动docker ...

  7. 网友问答之:AD、DNS转发器、WINS不能自动启动

    网友问答之:AD.DNS转发器.WINS不能自动启动 1.企业网络中,将DNS与Active Directory集成在一起即可,一般建议配置2台Active Directory服务器. 络腮胡2014 ...

  8. 是时候搁置Grunt,耍一耍gulp了

    也算是用了半年Grunt,几个月前也写过一篇它的入门文章(点此查看),不得不说它是前端项目的一个得力助手.不过技术工具跟语言一样日新月异,总会有更好用的新的东西把旧的拍死在沙滩上(当然Grunt肯定没 ...

  9. 简介Gulp, Grunt, Bower, 和 Npm 对Visual Studio的支持

    [原文发表地址]Introducing Gulp, Grunt, Bower, and npm support for Visual Studio Web 开发,特别是前端 Web 开发,正迅速变得像 ...

最新文章

  1. debian编译安装python_编译安装python2.7及相关模块(debian5.0.1)
  2. C++之匿名对象与析构函数的关系
  3. mysql 索引类型案例_Mysql索引类型与基本用法实例分析
  4. php代码编写直接插入排序算法,PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析...
  5. java运行出现XML_eclipse开发环境下,项目运行时出现pom.xml报错(java.io.PrintWriter)...
  6. 把杀某程序封装成sh
  7. [UE4]虚幻引擎UE4如何制作可拖动(Drag and Drop)的背包(Scrollbox)(转载)
  8. xshell使用xftp传输文件 、使用pure-ftpd搭建ftp服务
  9. linux运维之网络配置
  10. 【VS2015】 C++实现硬件ID的查询
  11. MATAL角度弧度互换
  12. easyui datagrid mysql分页_Easyui 自定义分页_EasyUI 教程
  13. VScode 常用必备插件
  14. vs警告 当前源代码跟内置的版本不一致解决办法
  15. ModelAndView: materialized View is [null];和Action的onSubmit()方法不被执行
  16. 天猫登录html代码,天猫静态页面
  17. 计算机通过镜子测试,人工智能通过镜子测试或许只是一个悖论
  18. 光伏发电站|太阳能电池板辐照度(4G)无线直流电压汇集电流测量采集监控技术方案
  19. 苹果 iTunes connect 下架APP
  20. 记录一下八款开源 Android 游戏引擎

热门文章

  1. sliverlight3 学习 2, 布局
  2. LINQ 的标准查询操作符
  3. 机器字长、存储字长、指令字长
  4. android service onlowmemory,Android乱弹onLowMemory()和onTrimMemory()
  5. 训练不出结果_训练赛惨败SKT?FPX直播透露拿冠军原因!Karsa再谈离开RNG?
  6. 使用SpringMVC模拟文件上传与下载案例
  7. 地磅称重软件源码_【漯河衡器】导致地磅称重不准原因及处理措施
  8. process 类 java_编写可执行jar——java的Process类的使用(二)
  9. android自定义view的实现方法,Android自定义View的实现方法
  10. this指向、数据双向流、传递参数、JSX中循环、React中样式、路由、引入资源的其它方式、create-react-app脚手架、事件处理、获取数据、UI框架推荐、pc桌面应用electronjs