2016-07-21 36 views
3

Wir haben ein Webprojekt, das mehrere git submodules ineinander hat. Für Funktionstests verwenden wir sowohl PhantomJS als auch Selenium (eine für lokale Entwicklung, die andere für CI-Bereitstellung und visuelle Regressionstests).npm Modul lokal installieren nur wenn nicht global verfügbar

Da jedes Submodul eigene package.json, PhantomJS und selenium-standalone hat, werden während des Bootstrap-Prozesses mehrere Male installiert.

Meine Frage ist dies: Kann ich diese riesigen npm Module global installieren und irgendwie meine Anwendung holen die globale Installation und nur wenn dies nicht verfügbar ist, versuchen Sie, aus dem Cache oder aus dem Remote-Repo zu ziehen?

Etwas wie:

if(global_install){ continue } else{ npm install }

Antwort

2

Vielleicht kann eine Lösung, was werden RedSpar0w hier vorgeschlagen: https://github.com/npm/npm/issues/2949#issuecomment-238703924

{ 
    "name": "Meh", 
    "description": "Some Description", 
    "scripts": { 
     "preinstall": "(npm list someDependency -g && npm install otherDependency -g) || (npm list someDependency || npm install someDependency) && npm install otherDependency -g" 
    } 
} 

prüft, ob someDependency global installiert, wenn ja, dann installieren otherDependency global sonst prüfen, ob someDependency lokal installiert, wenn nicht, dann installiere someDependency lokal, aber auf irgendeine Weise installiere andere global, da someDependency nicht ist lokal installiert

Sie können damit spielen, je nach Ihren Bedürfnissen.

+0

Ah das könnte funktionieren. Ich dachte nicht an "vor". Vielen Dank! – nikjohn