2016-07-26 9 views
0

Ich bin sehr neu zu Nodejs.Nodejs App mit Npm Start-Skript

In meiner dockerisierten Umgebung möchte ich die appdynamics-Unterstützung für nodejs-Apps bereitstellen. Dies erfordert, dass jede App die folgende Zeile in ihrer App benötigt.

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', 
}); 

ich plane zu tun, dass ein Wrapper appdynamics.js um die App-Eintrag Datei mit dem Namen, indem. Details:

  1. ich ein Skript in meinem NodeJS Docker Bild, um den Eintrag Dateinamen in der package.json App ersetzen mit „appdynamics.js“, wo appdynamics.js die oben AppDynamics hat benötigen Aussage bezogen. Ex: {scripts { "start" : "node server.js" }} mit {scripts { "start" : "node appdynamics.js"}}

  2. Dann ersetzt werden, i "require" die "server.js" innerhalb appdynamics.js.

  3. Invoke npm starten.

Meine einzige Sorge ist dies:

Wenn die package.json so etwas wie Skripte hatte { "start" : "coffee server.coffee" }, mein Skript es { "start" : "coffee appdynamics.js" } ersetzen wird. und dann ruft mein Skript npm start auf, was zu einem Fehler führt.

Was ist der beste Weg, dies zu lösen?

Dies ist eine Follow-up-Frage zu Use "coffee" instead of "node" command in production

+0

sein Warum würden Sie nicht dieser Prozess von einem Build als Teil tun, die einfach den entsprechenden Code injiziert in Ihre server.js Datei? Du könntest jedes Templating-Modul verwenden, Regex ersetzen usw. Grunzen, schlucken, machen, was auch immer. –

+0

Danke, dass du dir Zeit genommen hast, zu antworten. Der Grund dafür ist, dass ich im PAAS-Team bin und nur die Werte der von appdynamics benötigten Felder kennen. Außerdem möchten wir appdynamics für die auf unserer Plattform laufenden nodejs-Apps nahtlos verfügbar machen. Auf diese Weise muss sich der App-Entwickler keine Gedanken über die appdynamics-Konfigurationswerte machen. – user6147402

+0

Das macht dann total Sinn.Dies nahtlos zu tun wird wahrscheinlich schwierig sein. –

Antwort

0
  • einen Wrapper schreiben appdynamics.coffee
  • Kompilieren Sie diesen Wrapper .js
  • ersetzen server.js mit appdynamics.js und server.coffee mit appdynamics.coffee

Danach genannt Operationen

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

wird

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

und

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

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