আপনি কীভাবে প্যাকেজ.জসন (এনপিএম) এ তালিকাভুক্ত সমস্ত নির্ভরতা আনইনস্টল করবেন?


107

আমার যদি আমার অ্যাপ্লিকেশন রুটে সংজ্ঞায়িত একটি প্যাকেজ.জসন ফাইল থাকে এবং npm install -gএটি চালায় তবে এটি প্যাকেজ.জেসনে সংজ্ঞায়িত সমস্ত নির্ভরতা ইনস্টল করবে, গ্লোব্যাবলি।

তবে এটি বিপরীতে কাজ করবে বলে মনে হয় না।

আমি npm uninstall -gযদি আমার অ্যাপ্লিকেশনটি মূলের সাথে করি তবে এটি একটি ত্রুটি ছুঁড়ে ফেলে, আমাকে এটি একটি প্যাকেজের নাম পাস করার জন্য প্রেরণা দেয়।

এটি কি আমি ইনস্টল করা একই প্যাকেজগুলি আনইনস্টল করা উচিত নয়?

আমি কি ভুল কিছু করছি?


1
এফওয়াইআই এনপিএম-জি ব্যবহার না করার পিছনে আমার যুক্তি। peterlyons.com/problog/2012/09/…
পিটার লিয়নস

1
মনে রাখবেন যে আপনি যদি আপনার প্রকল্পের জন্য কোনও মডিউল ব্যবহার করতে চান তবে আপনাকে এটি স্থানীয়ভাবে ইনস্টল করতে হবে। উদাহরণস্বরূপ এক্সপ্রেস এবং এক্সপ্রেস (1) এর মতো বিশ্বব্যাপী একটি মডিউল ইনস্টল করা আপনার টার্মিনালে আরও কমান্ড সরবরাহ করে provides
ওয়ারচিমিডে

@ এসগওয়িলি বিশ্বব্যাপী নোড_মডিউলগুলি ব্যবহার করার বিষয়ে আপনি ভুল - এটি ডকুমেন্টেও এমনটি বলেছে - nodejs.org/api/modules.html#modules_all_together - প্রয়োজনীয় () ফাংশনটি 'স্মার্ট' যাতে এটি বিভিন্ন স্থানে দেখায় চেষ্টা করুন এবং বিশ্বব্যাপী node_modules সহ একটি মডিউলের জন্য একটি পাথ সমাধান করতে
qodeninja

আমার আরও সুনির্দিষ্ট হওয়া উচিত ছিল: এটি সত্য যে (বিশ্বব্যাপী ইনস্টল হওয়া মডিউলটি খুঁজে পাওয়ার জন্য) যথেষ্ট স্মার্ট require যদি আপনার সমস্ত প্রকল্পগুলি সেই মডিউলটির একই সংস্করণের উপর নির্ভর করে তবে এটি কাজ করবে। তবুও, আপনি যদি বিশ্বব্যাপী নির্ভরতাগুলি পরিচালনা করেন তবে বিভিন্ন মডিউল সংস্করণগুলির উপর নির্ভরশীল প্রকল্পগুলি বজায় রাখা আপনার পক্ষে একটি কঠিন সময় থাকতে পারে। এ কারণেই সর্বদা স্থানীয়ভাবে মডিউলগুলি ইনস্টল করার সর্বোত্তম অনুশীলন এবং আপনি কয়েকটি কার্যকর এক্সিকিউটেবল কমান্ডের অ্যাক্সেস পেতে চাইলে কেবল বিশ্বব্যাপী এগুলি ইনস্টল করুন।
ওয়ারচিমিডে

@ এসগুইলি - আপনার মতামত এখানে ভাগ করে নেওয়ার জন্য ধন্যবাদ - এই প্রকল্পটি বিশেষত বিতরণযোগ্য তাই এটি আপডেট করার চেষ্টা করা উচিত নয় - আসল আপডেটগুলি আরপিএমের (নোট আরপিএম নয়, এনপিএম নয়) উপর ঘটবে এবং প্রকৃত নোড_মডিউলগুলি সঙ্কুচিত - আমার কেবলমাত্র RPM ইনস্টল শেষ হওয়া যাই হোক না কেন (আমার দেব পরিবেশে) সিস্টেমটি দ্রুত পরিষ্কার করার জন্য একটি
উপায়ের দরকার ছিল

উত্তর:


167

ব্যাশ ব্যবহার করা হলে, কেবল আপনার প্যাকেজ.জসন ফাইল রয়েছে এমন ফোল্ডারে স্যুইচ করুন এবং নিম্নলিখিতটি চালান:

for package in `ls node_modules`; do npm uninstall $package; done;

বিশ্বব্যাপী ইনস্টল করা প্যাকেজগুলির ক্ষেত্রে আপনার %appdata%/npmফোল্ডারে স্যুইচ করুন (উইন্ডোজ থাকলে) এবং একই কমান্ডটি চালান।

সম্পাদনা: এই কমান্ডটি এনপিএম 3.3.6 (নোড 5.0) এর সাথে বিরতি দেয়। আমি এখন নিম্নলিখিত বাশ কমান্ডটি ব্যবহার করছি, যা আমি আমার .বাশার্ক ফাইলটিতে এনপিএম_উইনস্টল_ল্যাপে ম্যাপ করেছি:

npm uninstall `ls -1 node_modules | tr '/\n' ' '`

যুক্ত বোনাস? এটি দ্রুততর!

https://github.com/npm/npm/issues/10187


1
"বিশ্বব্যাপী সমস্ত এনপিএম মডিউল অপসারণের আদেশ?" এর উত্তরের হিসাবে আপনি ঠিক একই কমান্ড পোস্ট করেছেন। এই পরিস্থিতি এবং এই দুটি ক্ষেত্রে এটি কীভাবে উপযুক্ত জিনিস হতে পারে?
কেউ নেই

@ অ্যান্ড্রুমেডিকো এটি কীভাবে উপযুক্ত নয়? আপনার প্যাকেজ ইনস্টল করা প্যাকেজ.জসন ফাইল আপনার নোড_মডিউল ফোল্ডারে ইনস্টল করা হবে। এই কমান্ডটি প্রতিটি উপ-ফোল্ডারটি নোড_মডিউলগুলি ফোল্ডারে নিয়ে যাবে এবং npm uninstall <package>প্রতিটি ফোল্ডারের জন্য চলবে । আমি নিজেই এটি করেছি এবং এটি দুর্দান্তভাবে কাজ করে!
jedmao

2
পছন্দ করুন দেখা যাচ্ছে, কিছু নির্ভরতা সত্যই গভীর হয়। এনটিএফএস ফাইল সিস্টেমে (উইন্ডোজ) কমপক্ষে, ডিরেক্টরিগুলি সরানোর ক্ষেত্রে এটির সমস্যা রয়েছে যেখানে পাথের নামটি কোনও প্রকার সীমাবদ্ধতার চেয়ে দীর্ঘ, ভাগ্যক্রমে, npm uninstallএটি যত্ন নেয়, যে কারণে এই কৌশলটি কার্যকর।
jedmao

7
পাওয়ারশেলের মাধ্যমে আমি এটি কী করতাম তা এখানে:foreach($package in ls node_modules){npm uninstall $package}
JustMaier

1
উইন্ডোতে কাজ করছে বলে মনে হচ্ছে না। tr is not recognized
ওভারড্রাইভার

78

এটি আমার পক্ষে কাজ করেছে:

আপনার প্রকল্পের নোড_মডিউলগুলি ফোল্ডারে কমান্ড প্রম্পট বা গিটব্যাশ এর পরে কার্যকর করুন:

npm uninstall *

এই প্রকল্পের জন্য স্থানীয় সমস্ত প্যাকেজ সরিয়ে ফেলা হয়েছে।


এটি কী বিশ্বব্যাপী ইনস্টলগুলি সরিয়ে দেয় না?
shinzou

@ শিনজৌ এটি আমার জন্য বিশ্বব্যাপী ইনস্টলগুলি সরিয়ে দেয়নি।
টেলর এডমিস্টন

1
ম্যাক 10.13.5 এ, এটি নীচে "> হ্যাপডাম্প@0.3.9 ইনস্টল / ব্যবহারকারী / বিক্রমণা / নোড_মডিউলস / হিপডম্প> নোড-জিপ পুনর্নির্মাণ সিএক্সএক্স (টার্গেট) রিলিজ / অজেক্ট.আরজেট / অ্যাডন / এসসিআর / হিপডম্পের মতো প্রচুর ত্রুটি ছুঁড়েছে। o ফাইল থেকে ../src/heapdump.cc:17: ../src/compat-inl.h:300:19 অন্তর্ভুক্ত: ত্রুটি: 'ভি 8 :: আইসোলেট' রিটার্ন আইসোলেট-> এ 'গেটপ্পুপ্রফিলার' নামে কোনও সদস্য নেই GetCpuProfiler () -> স্টার্টপ্রোফিলিং (শিরোনাম, রেকর্ড_সাম্পল); "
বিক্রমভি

35

উইন্ডোজের জন্য নোড_মডিউলগুলি ডির যান এবং এটিকে পাওয়ারশেলে চালান

npm uninstall (Get-ChildItem).Name 

আমার জন্য, এর ফলে ত্রুটির ফলাফল হয় "কমান্ড লাইনটি খুব দীর্ঘ।"
ড্যানিয়েল

29

আমি সম্প্রতি একটি নোড কমান্ড পেয়েছি যা নীচে সমস্ত উন্নয়ন নির্ভরতা আনইনস্টল করতে দেয়:

npm prune --production

আমি যেমন উল্লেখ করেছি, এই কমান্ডটি কেবলমাত্র উন্নয়ন নির্ভর প্যাকেজগুলি আনইনস্টল করে। অন্তত এটি আমাকে নিজেই এটি না করতে সহায়তা করেছিল।


8

উইন্ডোজ ব্যবহারকারীদের জন্য পরামর্শ: node_modulesমূল ডিরেক্টরি থেকে এই পাওয়ারশেল কমান্ডটি চালান :

ls .\node_modules | % {npm uninstall $_}

6
// forcibly remove and reinstall all package dependencies
ren package.json package.json-bak
echo {} > package.json
npm prune
del package.json
ren package.json-bak package.json
npm i

এটি মূলত একটি নকল, খালি প্যাকেজ.জসন তৈরি করে, নোড_মডিউলগুলিতে npm pruneসমস্ত কিছু সরিয়ে ফেলার জন্য কল করে, মূল প্যাকেজ.জসন পুনরুদ্ধার করে এবং সবকিছু পুনরায় ইনস্টল করে।

অন্যান্য সমাধানগুলির মধ্যে কিছু সম্ভবত মার্জিত হতে পারে তবে আমার সন্দেহ হয় এটি দ্রুত এবং পরিস্রাবণীয়। অন্যান্য থ্রেডগুলিতে আমি দেখেছি লোকেরা কেবল নোড_মডিউলগুলি ডিরেক্টরি মুছে ফেলার পরামর্শ দেয় তবে কমপক্ষে উইন্ডোগুলির জন্য এটি এনপিএমকে পরে চাপিয়ে দেয় কারণ বিন ডিরেক্টরিটি অনুপস্থিত। হয়ত লিনাক্সে এটি সঠিকভাবে পুনরুদ্ধার হয় তবে উইন্ডো নয়।


1
আমার ক্ষেত্রে - আমার বিদ্যমান প্যাকেজ.জসনের দরকার পড়েনি (এনএমপি স্ক্রিপ্টগুলি কার্যকর করার পরে সিআই-তে স্ক্রিপ্ট চালানোর কারণে ..) সুতরাং আমি কেবল সাথে গিয়েছিলাম: "প্রতিধ্বনি package}> প্যাকেজ.জসন এবং এনপিএম প্রুন"
রিকি

5

আসলে সেখানে যে কাজ করতে কোনো বিকল্প নেই যদি আপনার কাছ থেকে আনইনস্টল প্যাকেজ করতে চান package.jsonকেবল কি npm lsএকই যে ডিরেক্টরি তে package.jsonনির্ভর এবং ব্যবহার npm uninstall <name>বা npm rm <name>প্যাকেজ সরাতে চান জন্য।


8
আমি জানি যে কীভাবে সেগুলি পৃথকভাবে অপসারণ করা যায় - প্যাকেজটির বিরুদ্ধে চালানোর জন্য যদি কোনও আদেশ পাওয়া যায় তবে jpm ফাইলটি এনপিএম ইনস্টল কাজ করে file
কোডেনিনজা

না আমরা প্রতিটি মডিউল হাতে হাতে আনইনস্টল করতে চাই না।
shinzou

1
  1. প্যাকেজ.জসন থেকে অবাঞ্ছিত নির্ভরতা অপসারণ করুন
  2. npm i

" npm i" কেবল অনুপস্থিত ডিপগুলি ইনস্টল করবে না, এটি প্যাকেজ.জসনের সাথে মেলে নোড_মডিউলগুলি আপডেট করে


1

( আপনি সমস্ত কিছু না পড়া পর্যন্ত এই পদক্ষেপগুলি প্রতিলিপি করবেন না )

আমার জন্য উল্লিখিত সমস্ত সমাধান কার্যকর হয়নি। আমি সেখানে গিয়ে /usr/libদৌড়ে এসেছি

for package in `ls node_modules`; do sudo npm uninstall $package; done;

তবে এটি npmপ্যাকেজটি এবং প্যাকেজগুলির অর্ধেকটি অপসারণ করেছে (যতক্ষণ না এটি চিঠি এন পৌঁছায়)।

তাই আমি নোড গাইড দ্বারা আবার নোড ইনস্টল করার চেষ্টা করেছি।

# Using Ubuntu
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
sudo apt-get install -y nodejs

তবে এটি আর ইনস্টল হয়নি npm

সুতরাং আমি পুরো নোডটি পুনরায় ইনস্টল করার সিদ্ধান্ত নিয়েছি sudo apt-get remove nodejs এবং আবার উপরের গাইড দ্বারা ইনস্টল করব।

এখন আবার এনপিএম কাজ করছে তবে গ্লোবাল মডিউলগুলি এখনও আছে। সুতরাং আমি ডিরেক্টরিটির সামগ্রীটি যাচাই করেছিলাম /usr/lib/node_modulesএবং মনে হয় কেবল এখানে গুরুত্বপূর্ণ npm। সুতরাং আমি বাদ দিয়ে সমস্ত কিছু আনইনস্টল করার জন্য উপরের আদেশটি সম্পাদনা করেছিnpm

for package in $(ls node_modules); do if [ "$package" != "npm" ]; then sudo npm uninstall $package; fi; done;

এটি এমন সমস্ত মডিউলগুলি সরিয়ে ফেলল যা পূর্বনির্ধারিত ছিল না @। তাই আমি উপ-ডিরেক্টরিগুলির জন্য লুপটি প্রসারিত করেছি।

for package in $(ls node_modules); do if [  ${package:0:1} = \@ ]; then 
        for innerPackage in $(ls node_modules/${package}); do
                sudo npm uninstall "$package/$innerPackage";
        done;
fi; done;

আমার /usr/lib/node_modulesএখন কেবল npmএবং লিঙ্কযুক্ত প্যাকেজ রয়েছে।


0

এমনকি আপনার এটির জন্য লুপটি চালানোর দরকার নেই।

আপনি একমাত্র কমান্ড ব্যবহার করে সমস্ত নোড_মডিউলগুলি মুছতে পারেন: -

npm uninstall `ls -1 node_modules | tr '/\n' ' '`


0

ভিকাস কোহলি এবং জেডমওয়ের পিগি-ব্যাকিং অফ , আপনি এটি করতে পারেন

একক লাইন সংস্করণ:

npm uninstall `ls -1 node_modules | grep -v ^@ | tr '/\n' ' '` `find node_modules/@* -type d -depth 1 2>/dev/null | cut -d/ -f2-3 | tr '\n' ' '`

বহু-রেখাযুক্ত সংস্করণ:

npm uninstall \
`ls -1 node_modules | grep -v ^@ | tr '/\n' ' '` \
`find node_modules/@* -type d -depth 1 2>/dev/null | cut -d/ -f2-3 | tr '\n' ' '`

0

আর একটি সিম্পল বিকল্প হ'ল নোড_মডিউলগুলি এবং প্যাকেজ-লক.জসন মোছা

rm -rf node_modules
rm -rf package-lock.json

এর পরে আপনি এনপিএম প্যাকেজগুলি পুনরায় ইনস্টল করার চেষ্টা করতে পারেন

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