আমাদের কেন বিশ্বজুড়ে এবং স্থানীয়ভাবে ঝালাই ইনস্টল করা দরকার?


292

প্রায় 2 ম্যানুয়াল নি: শ্বাসে বলে আমি আরো এক সময় স্থানীয়ভাবে নি: শ্বাসে ইনস্টল করতে প্রথম বিশ্বব্যাপী (-G পতাকা দিয়ে) এবং তারপর প্রয়োজন যে। আমার কেন এটি দরকার?


12
প্রকল্পটির নিজস্ব "শুরু করা" পৃষ্ঠাটি একই কথা বলে। (কেন
এটিও

11
আমি আশা করি এনপিএম স্থানীয়ভাবে প্যাকেজের মতো একই সংস্করণ হিসাবে বিশ্বব্যাপী ইনস্টল করা নির্ভরতা প্যাকেজটি ব্যবহার করতে পারে। প্রতিটি প্রকল্পের ডিরেক্টরিতে 5MB গ্লুপ স্টাফ: /
সিয়েন্টিক

@Ciantic কোন guarantes, কিন্তু ... ➪ stackoverflow.com/a/25879563/444255
ফ্রাঙ্ক Nocke

উত্তর:


238

বিশ্বব্যাপী কোনও সরঞ্জাম ইনস্টল করার সময় এটি কোনও নোড প্রকল্পের বাইরের সহ কোনও কমান্ড লাইন ইউটিলিটি হিসাবে কোনও ব্যবহারকারীকে ব্যবহার করতে হবে। নোড প্রকল্পের জন্য গ্লোবাল ইনস্টলগুলি খারাপ কারণ তারা স্থাপনাকে আরও কঠিন করে তোলে।

এনপিএম 5.2+

npxউপযোগ সাথে বান্ডেল npm 5.2সমাধান এই সমস্যা। এটির সাহায্যে আপনি স্থানীয়ভাবে ইনস্টল হওয়া ইউটিলিটিগুলি যেমন বিশ্বজুড়ে ইনস্টল ইউটিলিটিগুলি (তবে আপনাকে অবশ্যই কমান্ডটি দিয়ে শুরু করতে হবে npx) অনুরোধ করতে পারেন। উদাহরণস্বরূপ, আপনি যদি স্থানীয়ভাবে ইনস্টল করা চান তবে আপনি এটি eslintকরতে পারেন:

npx eslint .

এনপিএম <5.2

যখন একটি ব্যবহৃত scriptআপনার package.json এর ক্ষেত্র, npmঅনুসন্ধান node_modulesপাশাপাশি গ্লোবালি ইনস্টল্ড মডিউল হিসাবে টুল জন্য, তাই স্থানীয় ইনস্টল যথেষ্ট।

সুতরাং, আপনি যদি (আপনার প্যাকেজ.জসনে) এর সাথে সন্তুষ্ট হন:

"devDependencies": {
    "gulp": "3.5.2"
}
"scripts": {
    "test": "gulp test"
}

ইত্যাদি এবং এর সাথে চলমান npm run testআপনার গ্লোবাল ইনস্টল করার প্রয়োজন হবে না।

উভয় পদ্ধতিই আপনার প্রকল্পের সাথে লোকেরা সেট আপ করার জন্য দরকারী কারণ যেহেতু sudoপ্রয়োজন নেই। এর অর্থ হ'ল gulpআপডেট করা হবে যখন সংস্করণটি প্যাকেজ.জসনে বিছিন্ন করা হবে, সুতরাং প্রত্যেকে আপনার প্রকল্পের সাথে বিকাশ করার সময় একই ধরণের গুল্প ব্যবহার করবে।

সংযোজন:

এটি বিশ্বব্যাপী ব্যবহার করার সময় গোপালের কিছু অস্বাভাবিক আচরণ রয়েছে বলে মনে হয়। গ্লোবাল ইনস্টল হিসাবে ব্যবহার করা হলে, কন্দ নিয়ন্ত্রণ সঞ্চার করার জন্য স্থানীয়ভাবে ইনস্টল করা গল্পের সন্ধান করে। অতএব একটি গল্ফ গ্লোবাল ইনস্টল কাজের জন্য একটি ঝাঁকুনির স্থানীয় ইনস্টল প্রয়োজন। উপরের উত্তর যদিও এখনও আছে। স্থানীয় ইনস্টলগুলি সর্বদা বিশ্বব্যাপী ইনস্টলের চেয়ে বেশি পছন্দনীয়।


3
হ্যাঁ তবে যখন আপনার ইন্টারনেট অ্যাক্সেস নেই? গল্পটি ইনস্টল করা না থাকলে আপনি কীভাবে ব্যবহার করতে পারেন?
ইগ্রাক

3
@ জিগ্রাচ উপরের স্ক্রিপ্টটি ইন্টারনেট সংযোগ ব্যবহার করে না। আপনি যদি প্যাকেজ.জসনে স্ক্রিপ্ট ক্ষেত্রটি ব্যবহার না করে একই জিনিসটি করতে চান তবে ব্যবহার করুন ./node_modules/.bin/gulp
qubyte

1
আমি এলিয়াসগুলি সংজ্ঞায়িত করেছি gulpএবং coffeeসুতরাং কমান্ডগুলি আমার নোড প্রকল্পের রুট (যেমন। alias gulp="node_modules/.bin/gulp") থেকে কাজ করে। এইভাবে কমান্ডগুলি প্রয়োজনে ব্যবহার করা সহজ এবং বিশ্বব্যাপী / স্থানীয় সংস্করণ সংঘাত না ঘটে।
ভিসি

ধন্যবাদ @ কেবাইটি! আমি মনে করি এটি স্থানীয়ভাবে ইনস্টল করা সাধারণভাবে একটি ভাল অনুশীলন। আমি আরও একটি প্রশ্ন পেয়েছি তাই আশা করি আপনি আমার মন পরিষ্কার করতে সাহায্য করতে পারেন। গুলপের নথিটি স্থানীয়ভাবে ইনস্টল না করে পরামর্শ দেওয়ার কারণে আমি বিশ্বব্যাপী এটি ইনস্টল করার চেষ্টা করেছি। সুতরাং আমি যখন চালানোর চেষ্টা করি তখন gulpএটি আমাকে নীচের ত্রুটি বার্তা দেয় Local gulp not found in ...। আমি যতদূর বুঝতে পারি, এটি প্রথমে স্থানীয় নোড_মডিউলগুলির দিকে নজর দেওয়া উচিত এবং যদি এটি না পাওয়া যায় তবে এটি বিশ্বব্যাপী ইনস্টল করা মডিউলগুলির দিকে নজর দেওয়া উচিত, তাই না? ধন্যবাদ!
ইয়েলান

1
একটি সংযোজন যুক্ত হয়েছে। আশা করা যায় যে এড়াতে অদ্ভুততা আবরণ।
qubyte

82

TLDR; এখানে কেন :

কারণ কারণ এই কাজ করে gulpচেষ্টা আপনার চালানোর জন্য gulpfile.jsআপনার স্থানীয়ভাবে ইনস্টল সংস্করণ ব্যবহার gulpদেখতে এখানে । অতএব গল্পের একটি বৈশ্বিক এবং স্থানীয় ইনস্টল করার কারণ।

মূলত, আপনি gulpস্থানীয়ভাবে ইনস্টল করার সময় স্ক্রিপ্টটি এতে নেই PATHএবং সুতরাং আপনি gulpশেলটি টাইপ করতে এবং প্রত্যাশা করতে পারবেন না যে কমান্ডটি সন্ধান করা হবে। এটি বিশ্বব্যাপী ইনস্টল করার মাধ্যমে gulpস্ক্রিপ্টটি আপনার মধ্যে আসে PATHকারণ গ্লোবাল node/bin/ডিরেক্টরি সম্ভবত আপনার পথে on

আপনার স্থানীয় নির্ভরতা সম্মান করতে যদিও, gulpএটি চালানোর জন্য আপনার স্থানীয়ভাবে ইনস্টল হওয়া সংস্করণটি ব্যবহার করবে gulpfile.js


1
bin / বিন হ'ল প্রতি ব্যবহারকারী বাইনারিগুলির জন্য একটি ইউনিক্স কনভেনশন এবং অনেকগুলি ওএসে ডিফল্টরূপে PATH এ। গুল্প সেখান থেকে এর বাইনারি লিঙ্ক করতে সক্ষম হওয়া উচিত।
মাইকমেকানা

2
অন্য কথায় বলেছিলেন যে আপনার বিশ্বব্যাপী ইনস্টল করা gulpপ্যাকেজটি সঠিকভাবে রাখার জন্য প্রয়োজন node_modules/.bin/gulp। স্টোরেজ সস্তা তবে একটি সিমিলিংক অনুকরণের জন্য এমবি ফেলে দেওয়া হ'ল আইএমও খাঁটি opালু।
এনটিডি

79

আপনি gulpস্থানীয়ভাবে স্থানীয়ভাবে ইনস্টল লিঙ্ক করতে পারেন

npm link gulp

1
আমি জানি যে স্থানীয় ইনস্টলগুলি ব্যবহার করা সবচেয়ে ভাল, তবে এমন ঘটনাও ঘটতে পারে যেখানে আপনি কেবল এটি ইনস্টল করতে পারবেন না বা কেবল চান না (কল্পনা করুন যে আপনার উত্সর্গীকৃত সিআই সার্ভারটি বিশ্বব্যাপী ইনস্টল হয়েছে এবং আপনি প্রতিটি প্রতিশ্রুতিতে এটি পুনরায় ইনস্টল করছেন) । যাইহোক, উল্লেখের জন্য +1 npm link
gion_13

1
আমি আপনি কি কি আছে দেখতে। যে চালাক।
গভীরতরতর

এটি প্রশ্নের উত্তর দেওয়ার চেষ্টা করে না
মাইকেম্যাকানা

1
না, এটি কেবল এটি বাতিল করে।
বেরিস্লাভ লোপাক

67

" কেন আমাদের বিশ্বজুড়ে এবং স্থানীয়ভাবে গাল্প ইনস্টল করার দরকার? " এই প্রশ্নটি নীচের দুটি প্রশ্নের মধ্যে বিভক্ত হয়ে যায়:

  1. আমি যদি ইতোমধ্যে বিশ্বব্যাপী এটি ইনস্টল করে থাকি তবে স্থানীয়ভাবে আমার কেন ঝালর ইনস্টল করা দরকার?

  2. আমি যদি ইতোমধ্যে স্থানীয়ভাবে ইনস্টল করে থাকি তবে কেন বিশ্বজুড়ে আমার ঝালর ইনস্টল করা দরকার?

আরও কয়েকজন বিচ্ছিন্নভাবে এই প্রশ্নগুলির দুর্দান্ত উত্তর সরবরাহ করেছেন, তবে আমি ভেবেছিলাম একীভূত উত্তরে তথ্য একত্রিত করা উপকারী হবে।

আমি যদি ইতোমধ্যে বিশ্বব্যাপী এটি ইনস্টল করে থাকি তবে স্থানীয়ভাবে আমার কেন ঝালর ইনস্টল করা দরকার?

স্থানীয়ভাবে গুল্প ইনস্টল করার যুক্তি বিভিন্ন কারণ নিয়ে গঠিত:

  1. স্থানীয়ভাবে আপনার প্রকল্পের নির্ভরতাগুলি অন্তর্ভুক্ত করে ব্যবহৃত গল্প (বা অন্যান্য নির্ভরতা) ব্যবহারের মূল সংস্করণটি নিশ্চিত করে ens
  2. প্রয়োজনীয়তা () ব্যবহার করার সময় নোড গ্লোবাল মডিউলগুলি ডিফল্টরূপে বিবেচনা করে না (যা আপনাকে আপনার স্ক্রিপ্টের মধ্যে গাল্প অন্তর্ভুক্ত করতে হবে)। শেষ পর্যন্ত, এটি কারণ হ'ল গ্লোবাল মডিউলগুলির পথটি ডিফল্টরূপে NODE_PATH এ যোগ করা হয়নি।
  3. নোড ডেভলপমেন্ট টিমের মতে, স্থানীয় মডিউলগুলি দ্রুত লোড হয়। আমি এটি বলতে পারি না কেন, তবে এটি নোডের উত্পাদন (যেমন রান-টাইম নির্ভরতা) উন্নয়নের চেয়ে বেশি (যেমন দেব নির্ভরতা) বেশি প্রাসঙ্গিক বলে মনে হয়। আমি মনে করি এটি একটি বৈধ কারণ কারণ কেউ কেউ স্থানীয় বনাম গ্লোবাল মডিউলগুলি লোড করে যা সামান্য গতির সুবিধা অর্জন করতে পারে সে সম্পর্কে চিন্তা করতে পারে তবে এই কারণে আপনার ভ্রু বাড়াতে নির্দ্বিধায় হন।

আমি যদি ইতোমধ্যে স্থানীয়ভাবে ইনস্টল করে থাকি তবে কেন বিশ্বজুড়ে আমার ঝালর ইনস্টল করা দরকার?

  1. বিশ্বব্যাপী গাল্প ইনস্টল করার যুক্তিটি সত্যই কেবল আপনার সিস্টেমের পাতায় স্বয়ংক্রিয়ভাবে গল্পটি কার্যকর করার উপযুক্ত is

স্থানীয়ভাবে ইনস্টল করা এড়াতে আপনি ব্যবহার করতে পারেন npm link [package], তবে লিঙ্ক কমান্ডের পাশাপাশি install --globalকমান্ডটি --save-devবিকল্পটিকে সমর্থন করবে বলে মনে হচ্ছে না যার অর্থ বিশ্বব্যাপী গল্প ইনস্টল করার সহজ উপায় বলে মনে হচ্ছে না এবং তারপরে যে কোনও সংস্করণ সহজেই যুক্ত করা যায় appear আপনার স্থানীয় প্যাকেজ.জসন ফাইল।

শেষ পর্যন্ত, আমি বিশ্বাস করি যে আপনার সমস্ত প্রকল্পগুলিতে সাধারণ সরঞ্জামগুলি ইনস্টল করার অনুরোধটি এড়াতে গ্লোবাল মডিউলগুলি ব্যবহার করার বিকল্পটি আরও বোধগম্য হয়ে উঠেছে, বিশেষত গ্রান্ট, গাল্প, জিশিন্ট ইত্যাদির মতো উন্নয়ন সরঞ্জামগুলির ক্ষেত্রে the মনে হচ্ছে আপনি যখন শস্যের বিরুদ্ধে যাচ্ছেন তখন আপনি কিছুটা লড়াইয়ে শেষ করেছেন।


7
প্রশ্নের পুরো দুটি পয়েন্ট রয়েছে তা উল্লেখ করার জন্য পুরো ইন্টারনেটের প্রথম ব্যক্তি হওয়ার জন্য +1। বেশিরভাগ প্রত্যেকেই উত্তর দেয় "আমি যদি ইতোমধ্যে স্থানীয়ভাবে এটি ইনস্টল করে থাকি তবে কেন বিশ্বজুড়ে আমার ঝাল লাগানো দরকার?" যখন আমি যা জানতে চেয়েছিলাম তা হ'ল যদি আমি ইতিমধ্যে বিশ্বব্যাপী এটি ইনস্টল করে থাকি তবে স্থানীয়ভাবে আমার কেন ঝাল লাগানো দরকার? "।
নাথান জেবি

10
এই প্রশ্নের এমন বিস্তৃত ব্যাখ্যার প্রয়োজনের অর্থ এই যে এটি কেবল কাজের খুব যৌক্তিক উপায় নয়। প্রতিটি প্রকল্পের জন্য বারবার একই সরঞ্জাম ইনস্টল করা প্রয়োজন হবে না।
কোকোডোকো

4
আপনার উত্তরটি খুব সুন্দর অস্বস্তিকর। আমার 80% শপথ বাক্য থাকতে পারে, কারণ এটি খুব বুদ্ধিমান ******* বোকা। টুলিং দৃষ্টিকোণ থেকে স্থানীয় ইনস্টলেশন তত্ত্বটি সম্ভবত সঠিক তবে একটি ওএস দৃষ্টিকোণ এবং একটি প্যাকেজ পরিচালকদের দৃষ্টিকোণ থেকে এটি এতটাই পাগল যে আমি এর জন্য শব্দগুলি খুঁজে পাচ্ছি না। এনপিএম / গল্প ছেলেরা কোন ওষুধ গ্রহণ করে?!? যদি কারও দ্বিমত থাকে তবে দয়া করে পড়ুন কীভাবে সিস্টেম প্যাকেজ ম্যানেজার যেমন ডিপি কেজি, ইয়াম, প্যাকম্যান এবং কো। হবে।
জেপিজেড

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

2
সম্প্রদায়টি এখন কেবল সুতা ব্যবহারে এগিয়ে যাওয়ার কারণে এটি এখন সত্যিই একটি নন-ইস্যু :)
ডেরেক গ্রেয়ার

8

প্রযুক্তিগতভাবে node_modulesআপনার স্থানীয় ইনস্টলেশন ফোল্ডারটি যদি আপনার থাকে তবে বিশ্বব্যাপী এটি ইনস্টল করার দরকার নেই PATH। সাধারণত এটি একটি ভাল ধারণা নয়।

বিকল্প হিসাবে যদি npm testরেফারেন্সগুলি থাকে gulpতবে আপনি কেবল টাইপ করতে পারেন npm testএবং এটি স্থানীয় ঝাঁকুনি চালাবেন।

আমি বিশ্বব্যাপী গুল্প কখনও ইনস্টল করি নি - আমার মনে হয় এটি খারাপ ফর্ম।


3
এটি আপনার পথে রাখার চেয়ে আরও ভাল উপায় হ'ল এনপিএম স্ক্রিপ্টগুলি ব্যবহার করা
জয়

2

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

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


হ্যাঁ, দয়া করে, এই সমস্যাটির আরও গভীর দিকে ডুব দিন।
কেনারব

1

আমি এটি এখানে না দেখায় কেবল আপনি ম্যাকওএস বা লিনাক্সে থাকলে, আমি আপনাকে এটিকে আপনার রাস্তায় যুক্ত করার পরামর্শ দিই (আপনার বাশার্কে ইত্যাদি):

node_modules/.bin

এই আপেক্ষিক পাথ এন্ট্রি সহ, আপনি যদি কোনও নোড প্রকল্পের মূল ফোল্ডারে বসে থাকেন তবে আপনি "গ্লোবাল ইনস্টলগুলি" বা npm runইত্যাদি সম্পর্কে চিন্তা না করে কোনও কমান্ড লাইন সরঞ্জাম (এসলিন্ট, গাল্প, ইত্যাদি) চালাতে পারেন you

একবার এটি করার পরে, আমি বিশ্বব্যাপী কোনও মডিউল ইনস্টল করিনি।

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