আমি জানি এটি একটি পুরানো প্রশ্ন, তবে semver
কোনও preinstall
স্ক্রিপ্টের সাহায্যে কিছু সংস্করণ চেক করার চেষ্টা করার সময় আমি এটিকে ছুঁড়েছি package.json
। যেহেতু আমি জানতাম যে আমি ইনস্টল হওয়া কোনও স্থানীয় মডিউলগুলির উপর নির্ভর করতে পারি না, তাই আমি semver
এটি বিশ্বব্যাপী node_modules
ফোল্ডারটি থেকে প্রয়োজনীয় হিসাবে ব্যবহার করেছি ( npm
এটির উপর নির্ভর করে আমি জানি এটি সেখানে):
function requireGlobal(packageName) {
var childProcess = require('child_process');
var path = require('path');
var fs = require('fs');
var globalNodeModules = childProcess.execSync('npm root -g').toString().trim();
var packageDir = path.join(globalNodeModules, packageName);
if (!fs.existsSync(packageDir))
packageDir = path.join(globalNodeModules, 'npm/node_modules', packageName); //find package required by old npm
if (!fs.existsSync(packageDir))
throw new Error('Cannot find global module \'' + packageName + '\'');
var packageMeta = JSON.parse(fs.readFileSync(path.join(packageDir, 'package.json')).toString());
var main = path.join(packageDir, packageMeta.main);
return require(main);
}
আমি এই পদ্ধতির পছন্দ করি কারণ এটি ব্যবহারের জন্য কোনও বিশেষ মডিউল ইনস্টল করার প্রয়োজন হয় না।
আমি কোনও NODE_PATH
সমাধানের সাথে যাইনি যেমন অন্যরা পরামর্শ দিয়েছিল যেহেতু আমি এটি চালানোর আগে অতিরিক্ত কনফিগারেশন / সেটআপের প্রয়োজন ছাড়াই কারও মেশিনে কাজ করতে চেয়েছিলামnpm install
আমার প্রকল্পের জন্য ।
এটি যেভাবে কোড করা হয়েছে, কেবলমাত্র এটি শীর্ষ স্তরের মডিউলগুলি (ব্যবহার করে ইনস্টল করা npm install -g ...
) বা প্রয়োজনীয় মডিউলগুলি npm
( dependencies
এখানে তালিকাভুক্ত : https://github.com/npm/npm/blob/master/package.json ) সন্ধানের গ্যারান্টিযুক্ত । আপনি যদি এনপিএম এর একটি নতুন সংস্করণ ব্যবহার করে থাকেন তবে এটি এখন বিশ্বব্যাপী ইনস্টল করা প্যাকেজগুলির নির্ভরতাগুলি খুঁজে পেতে পারে কারণ node_modules
এখন ফোল্ডারগুলির জন্য চাটুকার কাঠামো রয়েছে ।
আশা করি এটি কারও কাজে লাগবে।