具有npm启动脚本的Nodejs应用程序

时间:2016-07-26 21:34:56

标签: node.js docker coffeescript appdynamics

我对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 docker image中运行一个脚本,用appdynamics.js替换应用程序的package.json中的条目文件名,其中appdynamics.js具有上述appdynamics相关的require语句。 例如:{scripts { "start" : "node server.js" }}将替换为  {scripts { "start" : "node appdynamics.js"}}

  2. 然后,我在appdynamics.js中“需要”“server.js”。

  3. 调用npm start。

  4. 我唯一担心的是:

    如果 package.json 类似于脚本{ "start" : "coffee server.coffee" },我的脚本会将其替换为{ "start" : "coffee appdynamics.js" }。然后我的脚本将调用npm start,这将导致错误。

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

    这是Use "coffee" instead of "node" command in production

    的后续问题

1 个答案:

答案 0 :(得分:0)

  • 写一个名为appdynamics.coffee
  • 的包装器
  • 将此包装器编译为.js
  • server.js替换为appdynamics.js,将server.coffee替换为appdynamics.coffee

此操作后

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

将是

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

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

将是

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