সমস্ত ইনস্টল করা নোড.জেএস মডিউলগুলির একটি তালিকা মুদ্রণ করুন


134

আমি যে নোড.জেএস স্ক্রিপ্টটিতে কাজ করছি তাতে আমি সমস্ত নোড.জেএস মডিউল (এনপিএম ব্যবহার করে ইনস্টল করা) কমান্ড লাইনে মুদ্রণ করতে চাই। কিভাবে আমি এটি করতে পারব?

console.log(__filename);

//now I want to print all installed modules to the command line. How can I do this?

এই ক্ষেত্রে, কোনও ফাংশন লিখতে দরকারী হতে পারে যা নোড.জেএস মডিউলগুলির ফোল্ডারের পথ ফেরায় (যদি তা সম্ভব হয়)। একটি ক্রস প্ল্যাটফর্ম সমাধান আদর্শ হবে।
— অ্যান্ডারসন সবুজ

ডিরেক্টরি থেকে ফাইলগুলির তালিকা পাওয়ার তথ্য: স্ট্যাকওভারফ্লো
— অ্যান্ডারসন গ্রিন

উত্তর:


100

এনপিএম এলএস ব্যবহার করুন (এমনকি জসন আউটপুটও রয়েছে)

লিপি থেকে:

test.js:

function npmls(cb) {
  require('child_process').exec('npm ls --json', function(err, stdout, stderr) {
    if (err) return cb(err)
    cb(null, JSON.parse(stdout));
  });
}
npmls(console.log);

সঞ্চালন করুন:

> node test.js
null { name: 'x11', version: '0.0.11' }

এছাড়াও, আপনি মডিউল ফোল্ডারের ফাইল পাথ কীভাবে অর্জন করতে পারেন?
— অ্যান্ডারসন সবুজ

পাথ নোড_মডিউল / [মডিউল নাম] হবে। আমি বিশ্বাস করি এটি সমস্ত প্ল্যাটফর্মে কাজ করা উচিত। নোট করুন যে এইভাবে কেবল 'স্থানীয়' মডিউল গাছ মুদ্রিত হয় এবং requreনোড_মডিউলগুলিতে প্রথমে প্রদর্শিত হয়, তারপরে .. / নোড_মডিউলগুলি, ../../ নোড_মডিউলগুলি ( nodejs.org/api/… দেখুন ) এবং তারপরে NODE_PATH env var
— Andrey থেকে সিডোরভ

4
npm ls --parseableকেবল পাথের
— তালিকাগুলির

262

আপনি যদি সম্পূর্ণ ট্রি ছাড়াই বিশ্বব্যাপী ইনস্টল করা প্যাকেজগুলিতে আগ্রহী হন তবে:

npm -g ls --depth=0

বা স্থানীয়ভাবে (বাদ-জি):

npm ls --depth=0


6
আমি --l বা - দীর্ঘও নির্দিষ্ট করতে পছন্দ করি npm -g ls --depth=0 --long। এটি মডিউল বর্ণনা এবং গিথুব লিঙ্ক সরবরাহ করে।
— অ্যাডাম ক্যাভিনিস

যদি আপনি চান npm ls: সম্পূর্ণ উদাহরণ এই চেক আউট stackoverflow.com/questions/17937960/...
— prosti থেকে

48

সমস্ত বিশ্বব্যাপী ইনস্টল করা তৃতীয় পক্ষের মডিউলগুলির তালিকা, কনসোলে লিখুন:

 npm -g ls


9

সাধারণত, ইনস্টলড প্যাকেজগুলি তালিকাভুক্ত করার দুটি উপায় রয়েছে - কমান্ড লাইন ইন্টারফেসের ( সিএলআই ) মাধ্যমে বা আপনার অ্যাপ্লিকেশনটিতে API ব্যবহার করে ।

উভয় কমান্ড stdoutইনস্টল করা প্যাকেজগুলির সমস্ত সংস্করণ এবং সেই সাথে তাদের নির্ভরতাগুলি গাছের কাঠামোতে মুদ্রণ করবে ।


CLI

npm list

-gসমস্ত বিশ্বব্যাপী ইনস্টল করা প্যাকেজগুলি তালিকাভুক্ত করতে (গ্লোবাল) পতাকা ব্যবহার করুন । --depth=0কেবলমাত্র শীর্ষ প্যাকেজগুলির তালিকা তৈরি করতে পতাকা ব্যবহার করুন এবং তাদের নির্ভরতা নয়।


এপিআই

আপনার ক্ষেত্রে, আপনি এটি আপনার স্ক্রিপ্টের মধ্যে চালাতে চান, সুতরাং আপনার এপিআই ব্যবহার করা দরকার। ডক্স থেকে:

npm.commands.ls(args, [silent,] callback)

এতে মুদ্রণের পাশাপাশি stdoutডেটা কলব্যাকেও পাঠানো হবে।


এনপিএম অ্যাপ্লিকেশনগুলি থেকে অ্যাক্সেসযোগ্য একটি এপিআই রয়েছে তা নির্দিষ্ট করার জন্য ধন্যবাদ। আপনি কিভাবে ফাংশনগুলিতে যুক্তিগুলি পাস করবেন? আমি চেষ্টা করেছিলাম npm.commands.ls(["depth=0"], ... )কিন্তু এটি আমাকে ত্রুটি npm.commands.ls(["prod"], ... )দেয় এবং আমাকে একটি খালি অ্যারে দেয় ....
— গিয়ুলিয়ানো কোলাচিওনি

6

কেন নয় থেকে তাদের দখল dependenciesমধ্যে package.json?

অবশ্যই, এটি কেবল আপনাকে দেবে যা আপনি প্রকৃতপক্ষে সংরক্ষণ করেছেন তবে যাইহোক আপনার এটি করা উচিত।

console.log(Object.keys(require('./package.json').dependencies));

এটি আপনাকে বিশ্বব্যাপী ইনস্টল করা প্যাকেজগুলি দেবে না
— ওভেন জে ল্যাম্ব

মূল প্রশ্নটি তারা বিশ্বব্যাপী ইনস্টলড প্যাকেজগুলি অন্তর্ভুক্ত করতে চায় কিনা তা নির্দিষ্ট করে না। এই উত্তরটি অন্য উত্তরের একটি সহায়ক বিকল্প সরবরাহ করে।
— অ্যান্ডি ফ্লেমিং

3
for package in `sudo npm -g ls --depth=0 --parseable`; do
    printf "${package##*/}\n";
done

1
হ্যাঁ, আমার সমস্ত বাশ আজকাল রয়েছে$()
— এটি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.