2017-04-13 15 views
1

私はコードを実行し、それを実行するために必要なNodeのバージョンを教えてくれるライブラリやツールが必要です。おそらく、古いバージョンをサポートするために変更できるコードの部分に私に警告する方が良いでしょう。私のライブラリはどのバージョンのNodeをサポートしていますか?

野生のものはありますか?

+0

通常は存在しないと思うのですが、package.jsonを使用してノードエンジンをロックし、異なるバージョンでサポートされているものについて心配する必要はありません。 imhoは最新のLTSバージョンを選択するか、見つからないものが見つかるとポリフィルを使用します。 – Gntem

+0

ヘルプセンターからの引用:本、ツール、ソフトウェアライブラリ、チュートリアル、またはその他のオフサイトリソースを推奨するかどうかを尋ねる質問は、批判的な回答と迷惑メールを引き付ける傾向があるため、スタックオーバーフローのトピックではありません。代わりに、問題を説明し、それを解決するためにこれまでに何が行われているか*** – jfriend00

+0

私はライブラリを構築し、より広範な環境で動作するようにライブラリを最適化したいと考えています。私はリソースをオンラインで検索して何も見つからなかったので、私は質問しました。 – kequc

答えて

0

あなたが探しているものが正確かどうかはわかりませんが、パッケージ開発者は必要なバージョンを指定できるthere is an existing package.json property called "engines"です。 「エンジン」の要件をすべてpackage.jsonファイルに目を通すとのオブジェクトにそれをコンパイルするglobsemverパッケージを使用するにはあまりにも難しいことではありません。ここで

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

ことを作成するスクリプトの基本的な例です。あなたのためのオブジェクト:

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

がそれを実行します。

を210
node checkversions.js 
関連する問題