如何在Grunt上运行多个应用程序

时间:2015-06-11 05:29:28

标签: angularjs gruntjs server

我有两个应用程序说applicationAapplicationB,如果我在终端上运行以下命令

grunt serve

我的applicationA将会正常工作。

当我需要运行applicationB时,首先我需要停止applicationA然后我才能运行applicationB。如果我试图同时运行它,那就像这样抱怨

Fatal error: Port 9000 is already in use by another process.

注意:它运行的端口是9000,一个应用程序在angularJS,另一个包含静态页面

所以我的问题是我可以在Grunt并行运行多个应用程序吗?如果是,那么请指导我该怎么做?

5 个答案:

答案 0 :(得分:2)

  

所以我的问题是我可以在Grunt上运行多个应用程序吗?   平行?如果是,那么请指导我如何做到这一点

是的,您可以通过grunt(来自单独的终端窗口)运行多个应用程序,但请确保每个应用程序使用不同的端口号

您可以按如下方式注册grunt任务:

grunt.registerTask('serve', function (target) {
    if (target === 'applicationA') {
        return grunt.task.run([ 
            'express:appA',
        ]);
    }
    return grunt.task.run([
           'express:appB',
         ]);
  });

将applicationA作为grunt serve:applicationA而将applicationB作为grunt serve:applicationB

运行

希望它清楚!

答案 1 :(得分:2)

在阅读@NLN回答后,他提到了

  

确保每个人使用不同的端口号

所以我开始阅读我的Gruntfile.js文件。在此文件中,connect

中有一个applicationA对象定义如下
grunt.initConfig({
   connect: {
      options: {
        port: 9000, 
        hostname: 'localhost',
        livereload: 35729 
      }
   }    
});

所以在其他applicationB我已更改此配置portlivereload这样

grunt.initConfig({
   connect: {
      options: {
        port: 9001, // change to some different port
        hostname: 'localhost',
        livereload: 35730 // this also need to change to some different port
      }
   }    
});

它对我有用。愿它也可以帮助别人:)

答案 2 :(得分:0)

您可以通过更新Gruntfile

将grunt配置为在其他端口中运行
grunt.initConfig({
  server: {
    port: grunt.option('port') || 8000
  }
});

或者从命令行:

$ grunt serve --port=8000

答案 3 :(得分:0)

首先更改@Muhammad Suleman建议的端口号

之后,如果问题仍然存在,请在应用A中更改 livereload:false 并保留 livereload:true 在申请B中。

options: {                    
           livereload: false
          }

P.S。 - 与livereload解决相关的崇高文本2问题。

答案 4 :(得分:0)

如果有人在gruntFile中使用watch,但错误仍然显示“端口已被某个进程使用”,则您还必须在GruntFile.js的watch上将行livereload:true更改为livereload:9001一台服务器。