2016-07-26 104 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" 
    } 
}