প্যাকেজ.জসনে নোড_মডিউলগুলির জন্য পাথ নির্দিষ্ট করুন


96

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



লিঙ্কটির জন্য ব্লুন্ডারবয় ধন্যবাদ এটি পাগল যে এটি করার সহজ কোনও উপায় নেই। আচ্ছা ভালো.
sturoid

26
আমি নিশ্চিত নই আপনি কেন এমন উত্তর গ্রহণ করেছেন যা স্পষ্টভাবে আপনার প্রশ্নের উত্তর দেয় না। আপনি পাথ সেট কিভাবে জিজ্ঞাসা node_modules মধ্যেpackage.json , এবং xShirase এর উত্তর কেবল যে করতে একটি উপায় প্রদান করে না।
মার্ক আমেরিকা

4
তিনি সম্ভবত উত্তরটি গ্রহণ করেছেন কারণ এটি খুব স্পষ্টভাবে একটি এক্সওয়াই সমস্যা এবং একটি বিকল্প সমাধান "দুঃখিত, এটি সম্ভব নয়" এর চেয়ে ভাল।
জ্যাক হলজিঞ্জার

উত্তর:


58

হ্যাঁ আপনি করতে পারেন, কেবল NODE_PATH এনভ ভেরিয়েবল সেট করুন:

export NODE_PATH='yourdir'/node_modules

ডক অনুসারে:

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

অতিরিক্তভাবে, নোড নিম্নলিখিত অবস্থানগুলিতে অনুসন্ধান করবে:

1: OME হোম /। নোড_মডিউল

2: OME হোম /। নোড_ লাইব্রেরি

3: RE প্রিফিক্স / লিব / নোড

যেখানে OME HOM হ'ল ব্যবহারকারীর হোম ডিরেক্টরি এবং $ PREFIX নোডের কনফিগার করা নোড_প্রিফিক্স।

এগুলি বেশিরভাগ historicতিহাসিক কারণে রয়েছে। আপনি আপনার নির্ভরতা স্থানীয়ভাবে নোড_মডিউলগুলি ফোল্ডারে রাখতে উত্সাহিত হন। এগুলি দ্রুত এবং আরও নির্ভরযোগ্যভাবে লোড করা হবে।

সূত্র


4
ওটা দারুন. সুতরাং আমার ক্ষেত্রে যেখানে আমি তৈরি করছি প্রতিটি অ্যাপ্লিকেশনটিতে আমার স্থানীয় নোড_মডিউল আছে, আমি কি প্রকল্পের কোনও জেএস ফাইলে সেই রফতানি করব?
স্টোরয়েড

4
না, এটি পরিবেশের পরিবর্তনশীল, এটি সিস্টেম-স্তরে সেটআপ। সুতরাং আপনি এটি আপনার টার্মিনালে টাইপ করতে হবে। env ভেরিয়েবলের মধ্যে একটি নোড অ্যাপ্লিকেশানের মধ্যে ব্যবহার করা হয়process.env
xShirase

হুঁ ভাল লাগছে। আমাকে আরও কিছুটা খতিয়ে দেখতে হবে। সাহায্যের জন্য ধন্যবাদ.
sturoid

112
আমি আসলেই এই প্রশ্নের উত্তর বলে মনে করি না: তিনি লোকাল (অ্যাপ্লিকেশন স্তর) এনপিএম-প্যাকেজগুলির জন্য একটি পথ রাখতে প্যাকেজ.জসনের মধ্যে একটি সম্পত্তি চাইছিলেন asking এই উত্তরটি তাকে জানায় যে কীভাবে তিনি GLOBALLY (-g) ইনস্টল করা প্যাকেজগুলি অন্য ফোল্ডারে স্থানান্তর করতে পারেন।
ডেভিড লসার্ট

4
@ ইসমাইল ইকবাল দুঃখিত আমি আপনার মন্তব্যটি এখনই দেখেছি। এনপিএম বিশ্বে এটি দু'বছর হয়ে গেছে এবং আমরা ক্যাচিং, সুতা বা এমনকি এনএমপি 5, ওয়েবপ্যাক নিয়ে বেশ ঝাঁপিয়েছি ... আমি বলতে পারি যে এই দিনগুলিতে নোড_মডিউল হ্যান্ডেল করা ভাল way আপনার ক্ষেত্রে, আমি কেবল সমস্ত স্থানে একটি "এনপিএম ইনস্টল" করব - এনপিএম ক্যাশে ইতিমধ্যে প্যাকেজ ইনস্টল করা হিসাবে এটি ওভারহেড ছাড়াই ম্যানুয়ালি অনুলিপি করার মতো।
ডেভিড লজার্ট

28

সংক্ষেপে: এটি সম্ভব নয় এবং যেমন মনে হয় এটি কখনও সমর্থিত হবে না (দেখুন এখানে https://github.com/npm/npm/issues/775 )।

সিএলআই বা এনএনভি-ভেরিয়েবলগুলি ব্যবহার করে (বর্তমান নির্বাচিত উত্তর দেখুন), .এনপিআরসিআরসি-কনফিগারেশন ফাইল বা npm link- তাদের সকলের মধ্যে যা কিছু সাধারণ রয়েছে তা ব্যবহার করার কয়েকটি হ্যাক ওয়ার্ক-গ্রাউন্ড রয়েছে : এগুলি কখনও প্রজেক্ট-নির্দিষ্ট নয়, তবে সর্বদা কিছু প্রকারের এরglobal সমাধান।

আমার জন্য, সেগুলির সমাধানগুলির কোনওটিই সত্যিই পরিষ্কার নয় কারণ আপনার প্রকল্পের অবদানকারীদের সর্বদা কিছু বিশেষ কনফিগারেশন তৈরি করা বা কিছু বিশেষ জ্ঞান থাকা দরকার - তারা কেবল পারেন না npm install এটি এবং এটি কার্যকর হয়।

সুতরাং: হয় আপনাকে নিজের প্যাকেজ.জসনকে একই ডিরেক্টরিতে রাখতে হবে যেখানে আপনি আপনার নোড_মডিউলগুলি ইনস্টল করতে চান বা এই প্রকল্পটি যে তারা সবসময় আপনার প্রকল্পের মূল-স্থানে থাকবে তা নিয়েই বাঁচতে হবে।


16
"আপনি যদি" ​​নোড_মডিউলগুলি "আলাদাভাবে বানান করতে চান তবে দুঃখিত, কিছুই করতে পারবেন না That's এটি নোড-কোরের মধ্যে অন্তর্নির্মিত that এটি পরিবর্তন করা সম্পূর্ণ ভিন্ন প্যাকেজ ম্যানেজার গঠনের সমতুল্য" " <== আমার ধারণা ভেরিয়েবলগুলি ব্যবহার করে ভাল কাজ।
স্টিভডব্রাউন

2019 এর একটি মন্তব্য: দেখে মনে হচ্ছে সুতা মডিউল ডিরেক্টরিকে ওভাররাইড করে supports ঠিক আছে, সুতাটি একটি নতুন প্যাকেজ ম্যানেজার, আমি মনে করি।
ভানুয়ান

10

সুতা এই বৈশিষ্ট্যটি সমর্থন করে:

# .yarnrc file in project root
--modules-folder /node_modules

আপনি কোন প্যাকেজ ব্যবহার করেন তার উপর নির্ভর করে আপনার অভিজ্ঞতা পরিবর্তিত হতে পারে। আমি নিশ্চিত না যে আপনি সেই খরগোশের গর্তে যেতে চাইবেন।


6

আমি মনে করি না এটি আপনার মনে মনে ছিল কিনা তবে আমি এই প্রশ্নটি শেষ করেছি কারণ আমি node_modulesআমার প্রকল্প দিরের ভিতরে ইনস্টল করতে পারিনি কারণ এটি এমন একটি ফাইল সিস্টেমে মাউন্ট করা ছিল যা সিমলিঙ্কগুলি সমর্থন করে না (একটি ভিএম "শেয়ার্ড" ফোল্ডার )।

আমি নীচের কাজটি দেখতে পেয়েছি:

  1. package.jsonএকটি ভিন্ন ফাইল সিস্টেমের একটি অস্থায়ী ফোল্ডারে ফাইলটি অনুলিপি করুন
  2. npm installসেখানে দৌড়াও
  3. সিমলিংকগুলি অনুলিপিগুলিতে প্রসারিত node_modulesকরে ফলাফল ডিরেক্টরিটিকে আবার প্রকল্পের cp -r --dereferenceডিরিতে অনুলিপি করুন।

আমি আশা করি এটি অন্য কোনও node_modulesফাইল সিস্টেমে যাওয়ার উপায় খুঁজলে এই প্রশ্নটির অবসান ঘটায় এমন কাউকে সহায়তা করে ।

অন্যান্য অপশন

অন্য কার্যসংক্রান্ত, যা আমি GitHub সমস্যাটি হল এই যে @Charminbear লিঙ্ক পাওয়া , কিন্তু এই সাথে কাজ করে না grunt, কারণ এটা সমর্থন করে না NODE_PATHঅনুযায়ী https://github.com/browserify/resolve/issues/136 :

আসুন আপনাকে বলুন /media/sf_sharedএবং আপনি সেখানে সিমলিংক ইনস্টল করতে পারবেন না, যার অর্থ আপনি আসলে এনটিএম ইনস্টল করতে পারবেন না /media/sf_shared/myprojectকারণ কিছু মডিউল সিমলিংক ব্যবহার করে।

  • $ mkdir /home/dan/myproject && cd /home/dan/myproject
  • $ ln -s /media/sf_shared/myproject/package.json (আপনি এই দিকটিতে সিমিলিংক করতে পারেন, কেবলমাত্র / মিডিয়া / এসএফ_স্যাশার্ডের মধ্যে একটি তৈরি করতে পারবেন না)
  • $ npm install
  • $ cd /media/sf_shared/myproject
  • $ NODE_PATH=/home/dan/myproject/node_modules node index.js
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.