2016-07-26 100 views
0

我对nodejs非常陌生。使用npm开始脚本的Nodejs应用程序

在我的dockerized环境中,我想为nodejs应用程序提供appdynamics支持。这要求每个应用都要求将以下内容作为其应用的第一行。

require("appdynamics").profile({ 
    controllerHostName: '<controller host name>', 
     controllerPort: <controller port number>, 
     controllerSslEnabled: false, // Set to true if controllerPort is SSL 
     accountName: '<AppDynamics_account_name>', 
     accountAccessKey: '<AppDynamics_account_key>', //required 
     applicationName: 'your_app_name', 
     tierName: 'choose_a_tier_name', 
     nodeName: 'choose_a_node_name', 
}); 

我打算这样做,通过提供一个名为包装appdynamics.js围绕应用程序的入口文件。详细信息:

  1. 我在码头工人的NodeJS图像运行一个脚本来在应用程序的的package.json以“appdynamics.js”,其中appdynamics.js具有与上述appdynamics要求语句来替换项的文件名。 例:{scripts { "start" : "node server.js" }}{scripts { "start" : "node appdynamics.js"}}

  2. 然后被替换,我 “需要” 里面appdynamics.js “server.js”。

  3. 调用npm start。

我唯一担心的是这样的:

如果的package.json有这样的事情脚本{ "start" : "coffee server.coffee" },我的脚本将它替换到​​。然后我的脚本将调用npm start,这将会出错。

解决此问题的最佳方法是什么?

这是一个后续问题Use "coffee" instead of "node" command in production

+0

为什么你不这样做的构建过程,简单地注入相关的代码的一部分到你的server.js文件中?你可以使用任何模板引擎,正则表达式替换等。咕噜,吞咽,做,什么。 –

+0

感谢您花时间回复。原因是因为我在PAAS团队中,只知道appdynamics所需字段的值。此外,我们希望使appdynamics可以无缝地用于在我们的平台上运行的nodejs应用程序。这样,应用程序开发人员不必担心appdynamics配置值。 – user6147402

+0

那就是总体意义。这样做无缝可能会很困难。 –

回答

0
  • 编写一个叫做appdynamics.coffee
  • 包装编译此包装到.js
  • appdynamics.jsserver.coffeeappdynamics.coffee

在此之后更换server.js操作

{ 
    "scripts": { 
    "start": "node server.js" 
    } 
} 

{ 
    "scripts": { 
    "start": "node appdynamics.js" 
    } 
} 

{ 
    "scripts": { 
    "start": "coffee server.coffee" 
    } 
} 

{ 
    "scripts": { 
    "start": "coffee appdynamics.coffee" 
    } 
}