通过 Grunt 运行 Node 应用程序

     2023-02-16     192

关键词:

【中文标题】通过 Grunt 运行 Node 应用程序【英文标题】:Running Node app through Grunt 【发布时间】:2013-02-09 05:49:00 【问题描述】:

我正在尝试将我的 Node 应用程序作为 Grunt 任务运行。但是,我需要将其作为子进程生成,以允许我并行运行监视任务。

这行得通:

grunt.registerTask('start', function () 
  grunt.util.spawn(
     cmd: 'node'
    , args: ['app.js']
    )

  grunt.task.run('watch:app')
)

但是,当 watch 任务检测到变化时,这会再次触发 start 任务。在生成 Node 应用程序的另一个子进程之前,我需要杀死前一个子进程。

但是,我不知道如何终止该进程。这样的事情不起作用:

var child

grunt.registerTask('start', function () 
  if (child) child.kill()
  child = grunt.util.spawn(
     cmd: 'node'
    , args: ['app.js']
    )

  grunt.task.run('watch:app')
)

看来:

    即使我将生成的进程存储在函数上下文之外的变量中,它也不会持续存在,因此下次运行启动任务时,子进程是undefinedchild 没有 kill 功能……

【问题讨论】:

【参考方案1】:

看看grunt-nodemon,它处理了很多与生成子进程相关的问题。

【讨论】:

【参考方案2】:

这是因为grunt-contrib-watch 当前将所有任务作为子进程运行。所以变量child 不在同一个进程上下文中。很快,grunt-contrib-watch@0.3.0 将与nospawn 选项一起发布。这将允许您将手表配置为在同一上下文中生成任务运行,并使您的上述示例正常工作。

查看此问题以获取更多信息:

https://github.com/gruntjs/grunt-contrib-watch/issues/45

【讨论】:

我刚刚用nospawn 分支替换了我的grunt-contrib-watch 模块并将nospawn 选项设置为true:gist.github.com/OliverJAsh/5021187。 child 仍未在第二个函数调用中定义。另外,你知道我怎样才能杀死子进程吗? Gruntfile 不是一个 json 文件,只是一个 js 文件。您也不需要使用 grunt.task.run() 调用监视任务。以下是使用手表共享上下文的示例:github.com/gruntjs/grunt-contrib-watch/blob/nospawn/test/… 杀死一个子进程:child.kill('SIGINT'); 是 JS,我只是提取了相关的部分,抱歉造成混淆。我无法弄清楚为什么 child 仍然未定义,即使我确定 nospawn 设置为 true 并且我安装了正确的模块。 开始工作了!演示的代码是正确的,我的package.json 刚刚发生了一些事情。谢谢。

grunt构建一个项目

...作:grunt基于node环境运行,所有先安装node.js1.安装grunt,通过node的npm的包管理工具 >npminstallgrunt--save-dev2.npminit在项目中引导创建一个package.json文件  >npminit3.新建一个Gruntfile的js文件,主要是写入grunt的配置 &nb 查看详情

grunt配置详情

...否可以。一、安装node,首先确保电脑已有node的环境。然后运行 npminstall-ggrunt-cli  然后运行grunt--version查看当前grunt是否安装;二、在项目根目录下面创建一个js文件,叫gruntfile.js; & 查看详情

在 ElasticBeanstalk 上运行 Grunt

...发布时间】:2015-09-2505:36:00【问题描述】:我有一个节点应用程序需要grunt执行“构建”才能成功执行应用程序。(运行源代码的concat/minification/revving等)。我已经在具有SSH访问权限的EC2实例上运行它,因为我可以通过SSH进入目... 查看详情

在 Heroku 上运行 Grunt 构建任务

...015-10-1817:27:57【问题描述】:我正在Heroku上部署一个Node.js应用程序。我的生产部署基于Grunt任务,该任务缩小js和css文件,将它们放在调用它们的/dist文件夹中。如何在Heroku部署中添加此步骤?【问题讨论】:签出:***.com/questions/... 查看详情

在 Heroku 上运行 Grunt Build 时出错

...eroku上安装了一个使用YeomanBackbonegenerator生成的简单Backbone应用程序。我有一个非常简单的node.js服务器文件来提供Backbone应用程序,但由于缺少依赖项而无法部署到Heroku:输出:remote: 查看详情

为啥通过 Grunt 运行 Google JavaScript Linter 会失败?

】为啥通过Grunt运行GoogleJavaScriptLinter会失败?【英文标题】:WhydoesrunningGoogleJavaScriptLinterviaGruntfail?为什么通过Grunt运行GoogleJavaScriptLinter会失败?【发布时间】:2016-11-1313:25:36【问题描述】:我们使用gjslinter和Grunt来检查我们项目... 查看详情

在“模块”全局变量上运行 grunt-typescript 时,angular-mock 和 node.js 发生冲突

】在“模块”全局变量上运行grunt-typescript时,angular-mock和node.js发生冲突【英文标题】:angular-mockandnode.jsconflictingwhenrunninggrunt-typescriptonthe"module"globalvariable【发布时间】:2014-03-2200:02:30【问题描述】:我正在使用grunt-typesc... 查看详情

在生产中运行平均堆栈应用程序

】在生产中运行平均堆栈应用程序【英文标题】:Runmeanstackappinproduction【发布时间】:2013-12-1517:21:58【问题描述】:我只是在玩MEAN堆栈,但我不知道如何在生产模式下运行我的应用程序来执行一些基准测试。网站mean.io说:要在... 查看详情

在 OpsWorks 中使用 Grunt 或 Gulp

...:2014-11-2717:06:18【问题描述】:我想在AmazonOpsWorks上部署应用程序时触发Grunt或Gulp。默认情况下,OpsWorks的Node.js层运行npminstall,但不运行gulp,我不知道如何编写自定义配方:还有其他解决方案吗?【问题讨论】:【参考方案1】... 查看详情

grunt快速入门

快速入门Grunt和Grunt插件是通过 npm 安装并管理的,npm是 Node.js 的包管理器。Grunt0.4.x必须配合Node.js >=0.8.0版本使用。;奇数版本号的Node.js被认为是不稳定的开发版。在安装Grunt前,请确保当前环境中所安装的&... 查看详情

grunt管理js/css

1.安装node2.npm安装3.运行grunt,可能遇到下面的问题可以运行npminstall-ggrunt然后再运行grunt可以看到已经压缩成功了:  查看详情

使用 grunt、bower、node 模块部署到 heroku

...2014-08-2311:15:00【问题描述】:我正在向heroku部署一个平均应用程序,并且正在使用bower和grunt。我应该在gitrepo中包含我的节点模块吗?如果没有,我真的不确定我需要如何部署,因为post脚本引用了节点模块中的凉亭安装。我应该... 查看详情

停止 Heroku 运行 npm start + 运行啥来代替?

...声明:我是node.js/grunt/bower新手。我有一个node.js/grunt/bower应用程序,我正试图在Heroku上部署它。Her 查看详情

grunt简单教程

...需求。2.怎么安装先介绍一些东西:npm是node.js的包管理器通过npm能够下载安装nodejs的模块包cnpm是淘宝 npm镜像 查看详情

grunt的使用方法,环境配置和插件安装

...装全局的配置环境npminstall-ggrunt-cli2》安装grunt在命令行中运行命令npminstallgrunt--save-dev(这样输入的是每 查看详情

由于错误无法运行 grunt 命令:找不到模块“liftoff”

】由于错误无法运行grunt命令:找不到模块“liftoff”【英文标题】:Cannotrungruntcommandbecauseoferror:cannotfindmodule\'liftoff\'【发布时间】:2019-04-2319:58:42【问题描述】:我正在使用Bootstrap4开始一个简单的HTML项目,我想在其中使用已编... 查看详情

使用 grunt 服务器,如何将所有请求重定向到根 url?

...-06-0910:48:47【问题描述】:我正在构建我的第一个Angular.js应用程序,我正在使用Yeoman。Yeoman使用Grunt允许您使用命令“gruntserver”运行node.js连接服务器。我在html5模式下运行我的A 查看详情

运行 grunt 和 tomcat 服务器的 Web 应用程序(Spring、Angular、Grunt、Maven、Tomcat)

】运行grunt和tomcat服务器的Web应用程序(Spring、Angular、Grunt、Maven、Tomcat)【英文标题】:WebApp(Spring,Angular,Grunt,Maven,Tomcat)runningbothgruntandtomcatservers【发布时间】:2014-09-2501:09:18【问题描述】:好的,所以我一直在阅读其他几个堆... 查看详情