1
私はコードを実行し、それを実行するために必要なNodeのバージョンを教えてくれるライブラリやツールが必要です。おそらく、古いバージョンをサポートするために変更できるコードの部分に私に警告する方が良いでしょう。私のライブラリはどのバージョンのNodeをサポートしていますか?
野生のものはありますか?
私はコードを実行し、それを実行するために必要なNodeのバージョンを教えてくれるライブラリやツールが必要です。おそらく、古いバージョンをサポートするために変更できるコードの部分に私に警告する方が良いでしょう。私のライブラリはどのバージョンのNodeをサポートしていますか?
野生のものはありますか?
あなたが探しているものが正確かどうかはわかりませんが、パッケージ開発者は必要なバージョンを指定できるthere is an existing package.json
property called "engines"です。 「エンジン」の要件をすべてpackage.jsonファイルに目を通すとのオブジェクトにそれをコンパイルするglob
とsemver
パッケージを使用するにはあまりにも難しいことではありません。ここで
{
[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);
});
がそれを実行します。
を210node checkversions.js
通常は存在しないと思うのですが、package.jsonを使用してノードエンジンをロックし、異なるバージョンでサポートされているものについて心配する必要はありません。 imhoは最新のLTSバージョンを選択するか、見つからないものが見つかるとポリフィルを使用します。 – Gntem
ヘルプセンターからの引用:本、ツール、ソフトウェアライブラリ、チュートリアル、またはその他のオフサイトリソースを推奨するかどうかを尋ねる質問は、批判的な回答と迷惑メールを引き付ける傾向があるため、スタックオーバーフローのトピックではありません。代わりに、問題を説明し、それを解決するためにこれまでに何が行われているか*** – jfriend00
私はライブラリを構築し、より広範な環境で動作するようにライブラリを最適化したいと考えています。私はリソースをオンラインで検索して何も見つからなかったので、私は質問しました。 – kequc