2016-09-08 5 views
5

Ich baue meine App mit getrennten Micro-Services, jede hat ihre eigenen Repository und NPM Abhängigkeiten und möglicherweise auf einem anderen Server.So erstellen Sie shared package.json für mehrere npm-Repositorys

ich nach einem Weg suchen alle Abhängigkeiten in einer globalen package.json Datei zu setzen, die durch URL zugegriffen werden kann, so auf diese Weise kann ich eine gemeinsame Abhängigkeit Version aktualisieren, ohne alle laufen über die verschiedenen Mikrodienste , und aktualisieren sie eins nach dem anderen.

Ist es möglich?

Antwort

7

Leider unterstützt npm die Angabe der übergeordneten package.json-Datei nicht. Ein solches Feature war proposed some time ago, aber npm Maintainer kommen zu dem Schluss, dass es durch externe Tools erreicht werden sollte.

Natürlich können Sie dieses Werkzeug selbst schreiben. Es ist eine der möglichen aporaches:

  1. Bibliothek erstellen, die package.json-Datei mit allen gemeinsam genutzten Abhängigkeiten enthält. In diesem Beispiel heißt es shared-deps.

  2. erstellen merge.js Skript, die package.json Datei auf lokale gemeinsame Abhängigkeiten fügt hinzu, und fügen Sie es shared-deps Bibliothek:

    const fs = require('fs') 
    
    const localPackageJson = require('../../package.json') 
    const sharedPackageJson = require('./package.json') 
    
    Object.assign(localPackageJson.dependencies, sharedPackageJson.dependencies) 
    
    fs.writeFileSync('../../package.json', JSON.stringify(localPackageJson, null, 2)) 
    
  3. zu package.json von App hinzufügen, die diese gemeinsamen Abhängigkeiten folgenden nach der Installation Haken verwenden werden:

    "scripts": { 
        "postinstall": "node ./node_modules/a/merge.js" 
    } 
    
  4. wenn Sie jetzt npm install, gemeinsam genutzten Abhängigkeiten führen wird installiert tog Ether mit shared-deps Bibliothek, und Ihre package.json wird später aktualisiert werden.


+0

groß, danke !! –

+0

Ich verstehe es nicht. Wenn dies in postinstall gestellt wird, ist die Zusammenführung abgeschlossen * nachdem * die Installation abgeschlossen ist, und wie werden die zusammengeführten Abhängigkeiten installiert? Bedeutet das, dass es 2 npm hintereinander installieren muss? –

Verwandte Themen