我是靠谱客的博主 标致雪糕,最近开发中收集的这篇文章主要介绍node grunt_使用Node.js和Grunt进行本地连续交付,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

node grunt

几天前,我读了Gregor Riegler的一篇旧博客文章 ,内容是关于懒惰的开发人员可能是软件开发人员的一个很好的特征(因为懒惰的开发人员总是质疑他们的工作方式,并尝试寻找新的方法来增加他们的工作经验) 。 只是成为一名更懒惰的开发人员? 听起来不错。 那是一个很好的技能–我想我那时是一个非常好的开发人员;)

还请参见: 开发人员在策略上是懒惰的

如今,每个人都在谈论持续交付。 如果您尚未实现它,那么您可能想要这样做。 但是不用担心–在这篇博客中,我不会谈论如何将代码交付到生产环境中以及如何执行。 今天,我想介绍本地连续交付的主题,又称:

自动化本地构建系统

警告:这不是JRebel或Springloaded帖子。 两者都是热重载类的良好工具,并且都有权存在。 但是,两者都有其局限性。 JRebel不是免费的,Springloaded无法识别项目所依赖的库中的更改。 而且,在开发过程中遇到错误时,您要做的第一件事(如果错误不明显)是关闭热类重载,因为您无法确定它会如何解决您的问题。预期。

现在,它来了–我自己的连续交付和热部署方法:与Java结合使用Grunt。 Grunt是基于Node.js的Javascript Taskrunner。 任务可以是Maven构建。 任务可以是复制命令。 任务可以是启动服务器的命令。 任务可以是文件侦听器。 任务可以是对特定URL的http调用以重置缓存。 任务可以是任何东西。 此外,可以链接多个任务,以便一个任务可以触发其他任务。 对于简短的介绍,请阅读Grunt 入门指南 。

因此,让我们从一个示例开始,以阐明我的想法。

鉴于:

  • 应用程序:JavaEE Multi-Module-Maven项目
  • 伺服器:Wildfly 8.2.0
  • IDE:Eclipse

目标:

文件更改后自动构建和部署项目。

要求:

  • Node.js
  • 节点包管理器
  • 咕unt声

您唯一需要手动安装的是Node.js本身。 之后,需要一个简单的npm install -g grunt-cli来安装grunt命令行界面。

然后在项目根目录中执行npm install grunt并创建package.json和Gruntfile.js文件。 package.json文件包含我们的Javascript依赖项。 在项目根目录中npm install后,它们会自动为您下载。

在Gruntfile.js中,我们配置了grunt任务。

应用结构

testbox
|__ testbox-ejb
|__ testbox-war
|__ pom.xml
|__ package.json
|__ Gruntfile.js

package.json

{{
"devDependencies": {
"grunt-contrib-watch": "latest",
"grunt-notify": "~0.3.0",
"grunt-shell-spawn": "latest",
"load-grunt-tasks": "latest"
}
}

Gruntfile.js

(function() {
'use strict';
var project = {
javaFiles : [ 'testbox-war/src/main/java/**/*.java',
'testbox-ejb/src/main/java/**/*.java']
};
module.exports = function(grunt) {
require('load-grunt-tasks')(grunt);
grunt.loadNpmTasks('grunt-notify');
grunt.initConfig({
watch : {
files : [ project.javaFiles ],
tasks : [ 'notify:start',
'shell:build',
'shell:copy',
'notify:finished' ],
options : {
interrupt : true
}
},
shell : {
build : {
command : 'mvn clean install -DskipTests',
options : {
stdout : true,
stderr : true,
failOnError : true,
execOptions : {
maxBuffer : "Infinite"
}
}
},
copy : {
command : 'cp testbox-war/target/testbox-war-0.0.1-SNAPSHOT.war /Users/chrisyanx/wildfly-8.2.0.Final/standalone/deployments/testbox.war',
options : {
stdout : true,
stderr : true,
failOnError : true,
execOptions : {
maxBuffer : "Infinite"
}
}
}
},
notify : {
start : {
options : {
message : "Starting Deployment..."
}
},
finished : {
options : {
message : "Finished"
}
}
}
});
grunt.registerTask('default', [ 'watch' ]);
};
})();

在文件的顶部,定义了一个变量project ,该项目代表我的项目结构。 在监视任务的配置中,进一步引用该内容是为了告诉Grunt监视插件应侦听的文件更改。 如果检测到文件更改,则会触发几个子任务: notify:start - shell:build - shell:copy - notify:finished

  1. 通知用户已检测到更改-notify:start
  2. 通过maven命令构建项目– shell:build
  3. 生成的war文件复制到正在运行的服务器– shell:copy
  4. 用户收到咕gr声已结束的通知notify:finished

将War软件包放入其部署文件夹后,无需重新启动JBoss Wildfly服务器。 但是,如果需要,还可以添加启动/停止服务器的艰巨任务。

启动它

只需在位于项目根目录的命令行界面中键入grunt ,然后按Enter。 然后更改文件,看看会发生什么。

有人可能会说,使用maven插件可以达到相同的效果。 我是真的,但在我眼里这不是一个干净而孤立的解决方案。 我宁愿不再污染Maven配置,而创建数十个Maven配置文件和插件。

此外,使用Grunt方法可以真正减轻IDE的负担,因为您不是在IDE中进行构建,并且服务器可以在终端中运行。 将此方法与JRebel或Springloaded结合使用,您可以变得更快!

翻译自: https://jaxenter.com/local-continuous-delivery-node-js-grunt-115584.html

node grunt

最后

以上就是标致雪糕为你收集整理的node grunt_使用Node.js和Grunt进行本地连续交付的全部内容,希望文章能够帮你解决node grunt_使用Node.js和Grunt进行本地连续交付所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部