2017-04-13 4 views
1

Ich hoffe auf eine Bibliothek oder ein Tool, die meinen Code durchlaufen und mir sagen, welche Version von Node erforderlich ist, um es auszuführen. Vielleicht wäre es besser, wenn ich auf Bereiche des Codes aufmerksam mache, die geändert werden könnten, um ältere Versionen zu unterstützen.Welche Version von Node unterstützt meine Bibliothek?

Gibt es so etwas in freier Wildbahn?

+0

Ich glaube nicht, dass es in der Regel vorhanden ist, können Sie package.json verwenden, um die Knoten-Engine zu sperren und sich nicht darum kümmern, was auf verschiedenen Versionen unterstützt wird. imho wählen Sie aktuelle LTS-Versionen oder verwenden Sie Polyfills, wenn etwas fehlt. – Gntem

+0

Zitat aus der Hilfe: *** Fragen, die uns auffordern, ein Buch, ein Tool, eine Softwarebibliothek, ein Lernprogramm oder eine andere Offsite-Ressource zu empfehlen oder zu finden, sind für Stack Overflow off-topic, da sie tendenziell eher eigensinnige Antworten und Spam anziehen. Beschreiben Sie stattdessen das Problem und was bis jetzt getan wurde, um es zu lösen. *** – jfriend00

+0

Ich habe eine Bibliothek erstellt und möchte sie optimieren, um in einer größeren Anzahl von Umgebungen zu arbeiten. Ich suchte online nach einer Quelle und fand keine, also stellte ich die Frage. – kequc

Antwort

0

Ich bin mir nicht sicher, ob dies genau das ist, was Sie suchen, aber there is an existing package.json property called "engines" wo Paketentwickler angeben können, welche Version (en) sie benötigen. Nicht zu schwer glob und semver Pakete zu benutzen und durch alle package.json Dateien mit einer „Motoren“ Anforderung zu suchen und kompilieren, dass in ein Objekt aus:

{ 
    [version1]: [{ packageName, currentlySupported }, { ... }], 
    [version2]: [...], 
    ... 
} 

ist hier ein rudimentäres Beispiel eines Skripts, das schaffen wird, dass Objekt für Sie:

npm install glob semver 

checkversions.js:

const glob = require('glob'); 
const path = require('path'); 
const semver = require('semver'); 
const currentVersion = process.version; 
const versions = {}; 

glob('node_modules/*/package.json', (err, files) => { 
    files.forEach((file) => { 
     const pkg = require(path.resolve(__dirname, file)); 
     // only check add package if it specifies "engines" 
     if (pkg.engines && pkg.engines.node) { 
      const reqdVersion = pkg.engines.node.replace(/\s+/g, ''); 
      // assume you are using a supported version 
      let currentlySupported = true; 
      // check if current node version satisfies package requirements 
      if (!semver.satisfies(currentVersion, reqdVersion)) { 
       currentlySupported = false; 
      } 

      if (!Array.isArray(versions[reqdVersion])) { 
       versions[reqdVersion] = []; 
      } 

      versions[reqdVersion].push({ 
       package: file.replace(/node_modules\/(.*)\/package.json/, '$1'), 
       currentlySupported, 
      }); 
     } 
    }); 
    console.log(versions); 
}); 

Run it:

Verwandte Themen