নোড মডিউলগুলি তালিকাভুক্ত করার সহজ উপায় আমি এনপিএম লিঙ্ক করেছি?


123

আমি একটি কমান্ড সন্ধান করছি যা বিশ্বব্যাপী মডিউলগুলির নামগুলি npm linkস্থানীয় কপির সাথে আমার তালিকাবদ্ধ করবে এবং স্থানীয় পথের তালিকাও দেবে।

আসলে, একটি তালিকা সব গ্লোবালি ইনস্টল্ড মডিউল আরও ভাল, সঙ্গে হবে npm link; 'd বেশী পতাকাঙ্কিত একরকম।


1
npm -g lsসমস্ত বিশ্বব্যাপী মডিউলগুলি তালিকাভুক্ত করা উচিত, তবে আমি জানি না এটি লিঙ্কযুক্ত মডিউলগুলি তালিকাভুক্ত করে
ফেরডি 265

আপনার আবেদনের জন্য একটি "প্যাকেজ.জসন" ফাইল বজায় রাখুন
সিএম

1
@ সিআইএইম আমার কাছে প্রচুর প্যাকেজ.জসন সহ প্রচুর অ্যাপ্লিকেশন রয়েছে, সিআইএর মতো অন্যান্য উদ্দেশ্যে আমার বেশ কয়েকটি গ্লোবাল মডিউলও রয়েছে এবং অনেকগুলি কাঁটাচামচ এবং npm link'ডি। ট্র্যাক রাখতে আমার একটি উপায় দরকার need
কলম্ব

উত্তর:


64

আপনি কি কেবল node_modulesডিরেক্টরি সামগ্রীর তালিকা তৈরি করার চেষ্টা করেছিলেন (উদাহরণস্বরূপ ls -l node_modules | grep ^l)? এগুলি নরমাল সিমলিংক।

আপনার যদি সত্যই সমস্ত সিমলিংকগুলি সন্ধান করতে হয় তবে আপনি এর মতো কিছু চেষ্টা করতে পারেন find / -type d -name "node_modules" 2>/dev/null | xargs -I{} find {} -type l -maxdepth 1 | xargs ls -l


16
স্থানীয়ভাবে সংযুক্ত নেমস্পিড মডিউলগুলির সাথে কাজ করে না (@ নেমস্পেস / মডিউলনাম)। একটি নির্মম সমাধান হতে পারে:( ls -l node_modules ; ls -l node_modules/@* ) | grep ^l
Andrea Carraro

2
এই সমাধানটি উইন্ডোজে কাজ করে না (বা অন্য কোনও সমাধান করে না)।
মাইকা জোল্টু

2
@ মিকাহজল্টু উইন্ডোজে কাজ করবে যদি আপনি গিট বাশ টার্মিনাল ব্যবহার করেন
গ্রেগ এম

1
@ স্কেপড প্যাকেজগুলির জন্য, ls কমান্ডটিতে কেবল -R যুক্ত করুন:ls -l -R ./node_modules | grep ^l
রোমাসাটো

আমার জন্য কাজ করার জন্য নীচের উত্তরটি খুঁজে পেয়েছি stackoverflow.com/a/48593067/7491536
জ্যাক হাওয়ার্ড

194

সমস্ত বিশ্বব্যাপী সংযুক্ত মডিউল তালিকাভুক্ত করতে, এই কাজ করে (ডকুমেন্টেশন https://docs.npmjs.com/cli/ls ):

npm ls -g --depth=0 --link=true

আমাকে প্রথমে আমার মেশিনে এনপিএম এর সংস্করণটি আপডেট করতে হয়েছিল, যদিও:

npm install npm@latest -g

15
সবচেয়ে সহজ সমাধান এবং উইন্ডোজে কাজ করার জন্য উত্সাহিত। আশা করি আমি এটি একাধিকবার উপড়ে ফেলতে পারি।
আর্টিফ

প্রথম এক ডাব্লু / ও কাজ করে --link=true। আমার পরিবেশ: Win10, NVM = 1.1.7, বর্তমান নোড = 8.14.0
Jeb50

1
এবং তালিকাভুক্ত একটি মুছে ফেলতে:npm unlink <package> -g
জ্যামনেট

@ জেবি 50 এটি উপলব্ধি করে কারণ সংযুক্ত প্যাকেজগুলি বিশ্বব্যাপী ইনস্টল করা আছে।
কাস

20

পার্সিংয়ের আরও ভাল বিকল্পটি এটির মতো lsব্যবহার করা হয় find:

find . -type l

আপনি -maxdepth 1কেবল প্রথম ডিরেক্টরি স্তর প্রক্রিয়া করতে ব্যবহার করতে পারেন :

find . -maxdepth 1 -type l

আপনি -lsঅতিরিক্ত তথ্যের জন্য ব্যবহার করতে পারেন ।

উদাহরণস্বরূপ, npm লিঙ্কযুক্ত নোড মডিউলগুলি সন্ধানের জন্য:

find node_modules -maxdepth 1 -type l -ls

এখানে একটি নিবন্ধ কেন পার্সিং lsসেরা ধারণা নয়


এটি আমার জন্য দরকারী — ধন্যবাদ :) সংক্ষিপ্তসার: gist.github.com/ryanve/5e28670dc459a4f83955b20f31b3a9e0
রায়ানভ

13

আপনি যদি থেকে একটি সুন্দর রঙিন আউটপুট চান npm list, আপনি পছন্দ করতে পারেন:

\ls -F node_modules | sed -n 's/@$//p' | xargs npm ls -g --depth 0

যা আমার বর্তমান খেলার মাঠ দির দেয়:

+-- color@0.11.1 
+-- grunt@0.4.5
+-- http-server@0.8.5 
+-- jsdom@8.0.2 
+-- jsonfile@2.2.3 
+-- underscore@1.8.3 
+-- xmlserializer@0.3.3 
`-- zombie@4.2.1 

এটি কয়েকটি অনুমান করে তবে এটি বেশিরভাগ ক্ষেত্রেই কাজ করা উচিত, বা নীচের ব্যাখ্যাগুলির সাথে মানিয়ে নেওয়া সহজ হওয়া উচিত be

  • \lsআপনার lsকমান্ডে সম্ভাব্য এলিয়াস বাইপাস ব্যবহার করুন
  • -Fবিকল্প কোন লিঙ্কের জন্য নির্দেশক যোগ '@'
  • sedকমান্ড সেই লিঙ্কগুলি নির্বাচন করে এবং সূচকটি সরিয়ে ফেলা হবে
  • xargsঅংশ আর্গুমেন্ট পূর্ববর্তী আউটপুট পাসেরnpm ...
  • npm সঙ্গে আহ্বান করা হয়
    • listবা lsসংস্করণ সহ মডিউল তালিকাভুক্ত
      • llপ্রতিটি তালিকাভুক্ত মডিউল সম্পর্কে বিশদ পেতে সঙ্গে প্রতিস্থাপন ।
    • -g গ্লোবাল মডিউল এবং
    • --depth 0 অগভীর তালিকার জন্য (alচ্ছিক)
    • --long false ('তালিকা' দিয়ে ডিফল্ট)।

সমস্যা: কোনও কারণে এনপিএম এই মুহুর্তে আমার জন্য বহিরাগত এন্ট্রি দেয় (রঙিন নয়)। তারা আমার সাথে " এনপিএম লিঙ্কমুক্ত " এড হবে।

বর্তমান এনপিএম পাথের " বিশ্বব্যাপী ইনস্টল করা সমস্ত মডিউলগুলির একটি তালিকা " এর জন্য , আপনি কেবল এটিই করেন

npm list -g

আরও প্রয়োজনের জন্য আপনি একবার দেখতে চাইবেন

npm help folders

আপনি পুরো ফাইল সিস্টেমটি স্ক্যান না করে আপনি পিছনের দিকে সিমলিংকগুলি অনুসরণ করতে পারবেন না এবং (তবে এটি কোনও এনপিএম নির্দিষ্ট প্রশ্ন নয়)।

নাম অনুসারে ফাইল এবং ডিরেক্টরিগুলি দ্রুত সন্ধানের জন্য, আমি ব্যবহার করি locateযা সাধারণত একবারে পুনর্নির্মাণ সূচীতে কাজ করে।

locate '*/node_modules'

এবং সেখান থেকে কাজ শুরু করুন (আপনি --regexpবিকল্পটি দিয়ে অনুসন্ধানটি আরও পরিমার্জন করতে পারেন ।


আমি -gআমার স্থানীয় / নিকটস্থ ক্ষণস্থায়ী নির্ভরতা লিঙ্কগুলি না পেয়ে ব্যবহার করি । ধন্যবাদ!
ক্রস

4

আমি আমার নিজের সরঞ্জামটি লেখার পরেও এই প্রশ্নটি পেয়েছি, এখানে এটি সম্পূর্ণতার জন্য: এনপিএম-তালিকা-লিঙ্কযুক্ত

এটি ক্রমবর্ধমানভাবে হায়ারার্কিতে সমস্ত লিঙ্কযুক্ত প্যাকেজগুলি অনুসরণ করবে, আমার কাজের সময় আমাদের মাঝে মাঝে npm link2-3 স্তরের গভীরতা থাকতে পারে এবং আপনি ঠিক দেখতে পাবেন কোনটি স্থানীয় এবং কোনটি নয়, অবাক করা এড়ায়।

$ npm-list-linked
Linked packages in /home/user/projects/some-project/
    @prefix/package 0.2.7
        other-package 0.1.2

2

আমি একটি নোড.জেএস মডিউল তৈরি করেছি যা ব্যবহার fsকরে npm linkবা অন্যথায় সিমলিঙ্কগুলি পরীক্ষা করতে ব্যবহার করে ।

https://www.npmjs.com/package/symlinked

var symlinked = require("symlinked")

console.log(symlinked.names())

2
আপনি যদি এর জন্য সিআইএল এক্সিকিউটেবল যুক্ত করেন তবে বিশেষত মাঝারি. com / @maybekatz/… এর আলোকে সত্যিই মিষ্টি হবেন । সিমলিঙ্কযুক্ত প্যাকেজগুলি সন্ধানের জন্য সর্বাধিক ব্যবহারের কেসগুলি সি এল এলির।
চেম্বারলাইন

কোনও কারণে কোনও লিঙ্ক সনাক্ত করতে পারেনি :(
জ্যাকোপেন

@ চ্যাম্বারলাইন আপনি কি আমাকে সিআইএল সরঞ্জামের দিকে এপিআই মডেল করতে পারেন? অথবা github.com/ryanve/symlinked :) এ ক্লাইম কমান্ড অবদান রাখতে নির্দ্বিধায় নির্দ্বিধায় :)
ryanve

@ জ্যাকপকেন আপনি কি বিবরণ সহ github.com/ryanve/symlinked/issues/ নতুন একটি সমস্যা পোস্ট করতে পারবেন ?
ryanve

1
@ রাইয়ানভ - সম্পন্ন github.com/ryanve/symlinked/pull/1 - আমিও স্কোপড প্যাকেজ সমর্থন যুক্ত করেছি যেহেতু এটি কাজ করছে না। সাধারণ কাঠামোয় কুডোস! :)
চেম্বারলাইন

1

আমি নিজের এবং অন্যদের একই প্রশ্নটি দেখতে পাচ্ছি। আমি link-statusএই তথ্যটি প্রদর্শন করার জন্য নিজের জন্য একটি ছোট সি এল এল লিখেছিলাম , এটি অন্যকেও সাহায্য করতে পারে! এটি এখানে দেখুন!


0
find `npm root -g` -maxdepth 2 -type l

নেমস্পিড প্যাকেজ সহ বিশ্বব্যাপী লিঙ্কগুলি প্রদর্শন করতে।

@ অ্যান্ড্রু এর উত্তর কিছু সময় কাজ করে:

npm ls -g --depth=0 --link=true

তবে কিছু অনুষ্ঠানে আমার জন্য পিয়ার ডিপ ত্রুটিগুলি উড়িয়ে দিয়েছে। আশা করি যে কাউকে সাহায্য করবে!

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