আমি কীভাবে একাধিক প্রকল্পকে নোড_মডিউলগুলি ডিরেক্টরি শেয়ার করতে পারি?


95

আমি যখনই প্রকল্পগুলি তৈরি করি, আমাকে নোড মডিউলগুলির সমস্ত নির্ভরতা ডাউনলোড করতে হবে। নোড_মডিউলগুলি অনুলিপি না করেই কি একাধিক প্রকল্পে কেন্দ্রীয় নোড_মডিউলগুলি ভাগ করে নেওয়া যায়?

অনুসরণ অনুসারে, আমাকে প্রতিবার অনেক কমান্ড চালাতে হবে ..

npm install gulp-usemin                                                                        
npm install gulp-wrap
npm install gulp-connect
npm install gulp-watch
npm install gulp-minify-css
npm install gulp-uglify
npm install gulp-concat
npm install gulp-less
npm install gulp-rename
npm install gulp-minify-html

4
যদি সেগুলি থাকে তবে আপনি সেগুলি একটি সাধারণ, অভিভাবক ডিরেক্টরিতে ইনস্টল করতে পারেন। নোড ডি মডিউলটি অনুসন্ধান করে ডিরেক্টরিগুলি পরিচালনা করবে require। অন্যথায় না, এর node_modulesসাথে ব্যবহারের জন্য কোনও অফিসিয়াল "কেন্দ্রীয়" ফোল্ডার নেই require()
জোনাথন লোনভস্কি

আপনি বিশ্বব্যাপী পতাকা ব্যবহার করে বিশ্বব্যাপী এই প্যাকেজগুলি ইনস্টল করতে পারেন। সুতরাং আপনার প্রতিবার ইনস্টল কমান্ড চালানোর দরকার নেই। npm install <npm_package_name> -g
সাবা হাসান

উত্তর:


90

আপনি একেবারে প্রকল্পের মধ্যে একটি নোড_মডিউল ডিরেক্টরি ভাগ করতে পারেন।

থেকে নোড এর ডকুমেন্টেশন :

() প্রয়োজনে পাস করা মডিউল শনাক্তকারী কোনও নেটিভ মডিউল না হলে এবং '/', '../', বা './' দিয়ে শুরু না হয়, তবে নোডটি বর্তমান মডিউলটির মূল ডিরেক্টরিতে শুরু হয় এবং যুক্ত হয় / নোড_মডিউলগুলি এবং সেই অবস্থান থেকে মডিউলটি লোড করার চেষ্টা করে।

যদি এটি সেখানে না পাওয়া যায়, তবে ফাইল সিস্টেমের মূলটি না পৌঁছানো পর্যন্ত এটি প্যারেন্ট ডিরেক্টরিতে চলে যায়।

উদাহরণস্বরূপ, যদি '/home/ry/projects/foo.js' নামক ফাইলটির প্রয়োজন হয় ('bar.js'), তবে নোডটি এই স্থানে নীচের অবস্থানগুলিতে দেখতে পাবেন:

/home/ry/projects/node_modules/bar.js / home/ry/node_modules/bar.js / home/node_modules/bar.js / নোড_মডিউলস / বার.জেএস

সুতরাং আপনার প্রকল্প ডিরেক্টরিতে কেবল একটি নোড_মডিউল ফোল্ডারটি রেখে আপনার পছন্দসই মডিউলগুলি রাখুন। কেবল তাদের মতো সাধারণ প্রয়োজন। নোড যখন আপনার প্রকল্প ফোল্ডারে কোনও নোড_মডিউল ডিরেক্টরি খুঁজে না পায়, তখন এটি প্যারেন্ট ফোল্ডারটি স্বয়ংক্রিয়ভাবে চেক করবে। সুতরাং আপনার ডিরেক্টরি কাঠামোটি এভাবে তৈরি করুন:

-myProjects
--node_modules
--myproject1
---sub-project
--myproject2

সুতরাং এটির মতো, এমনকি আপনার উপ-প্রকল্পের নির্ভরতাগুলি আপনার মূল নোড_মডিউলগুলি সংগ্রহ করতে পারে।

এইভাবে করার ক্ষেত্রে একটি অসুবিধা হ'ল আপনাকে নিজের প্যাকেজ.জসন ফাইলটি ম্যানুয়ালি তৈরি করতে হবে (যদি না কেউ কেউ এটিকে ঘৃণা বা কোনও কিছুর সাহায্যে স্বয়ংক্রিয় করার উপায় জানেন)। আপনি যখন আপনার প্যাকেজগুলি ইনস্টল করেন এবং কোনও npm installকমান্ডে - সেভ আরগ যুক্ত করেন এটি স্বয়ংক্রিয়ভাবে নির্ভরতা বিভাগে বা আপনার প্যাকেজ.জসনের সাথে যুক্ত হয়, যা সুবিধাজনক।


4
কেন এটি একটি উত্তর হিসাবে গ্রহণ করা হয় না? @ টিপিকে আরও প্রশ্ন, আপনার পরামর্শ মতো একটি প্রকল্পের কাঠামো তৈরি করা উচিত, কীভাবে প্যারেন্ট মডিউল সংগ্রহস্থল থেকে ইনস্টল করার জন্য প্যাকেজ.জসন তৈরি করা যায়।
ডাইহেল

@ ডিহেল সুতরাং দেখে মনে হচ্ছে এটি "সব কিছু বা কিছুই নয়"। সমস্ত বা নির্ভরতা যদি পিতামাতার ডিরেক্টরিতে থাকে এবং সিডাব্লুডিতে কোনও নোড_মডিউল ডিরেক্টরি না থাকে তবে এনপিএম পিতামাতাকে পরীক্ষা করে এটি খুঁজে পেলে সেখানে ইনস্টল করবে। আপনি যদি ডিরেক্টরিটিতে কোনও নোড_মডিউল ফোল্ডার রাখেন তবে এটি সেখানে ইনস্টল হবে।
tpie

4
আমি দেখতে পাচ্ছি না যে নোড_মডিউলগুলি কীভাবে বিভিন্ন প্যাকেজ সংস্করণগুলি পরিচালনা করতে পারে, নোড_মডিউলগুলিতে থাকা প্যাকেজগুলি সি: \ ব্যবহারকারীদের (উইন্ডোজ) এর এনপিএম-ক্যাশের বিপরীতে সংস্করণিত হয় না?
সাইবারগুয়েস্ট

এনপিএম স্ক্রিপ্ট এবং প্যাকেজ.জসন ফাইলগুলি লেখার সময় আমি কীভাবে আমার দৃষ্টান্তটি পরিবর্তন করব?
ম্যাডডকস

18

আমি একটি কৌশল পেয়েছি, কেবল উইন্ডোজ বা লিনাক্সের সিম্বলিক লিঙ্কগুলি (সিমলিংকগুলি) দেখুন , এটি শর্টকাটের মতো কাজ করছে তবে আরও শক্তিশালী।

কেবলমাত্র আপনি যদি একটি করতে হবে Junctionআপনার জন্য node_modulesফোল্ডারের জন্য যে কোন জায়গায় আপনি চান। জংশনটি আপনার মূল নোড_মডিউল ফোল্ডারে শর্ট কাট ব্যতীত আর কিছুই নয়। এটি আপনার প্রকল্প ফোল্ডারের ভিতরে তৈরি করুন যেখানে যদি ব্যবহৃত হয় তবে আসল নোড_মডিউলগুলি তৈরি করা হত npm install

এটি অর্জন করতে আপনার কমপক্ষে একটি node_modulesআসল ফোল্ডার প্রয়োজন তখন অন্য প্রকল্পগুলিতে এটির সাথে একটি জংশন তৈরি করুন।

উইন্ডোজে আপনি কমান্ড প্রম্পটটি ব্যবহার করতে পারেন, বা কোনও অ্যাপ্লিকেশন ব্যবহার করতে পারেন। কমান্ড প্রম্পট ব্যবহার করা আপনাকে আরও কিছুটা নিয়ন্ত্রণ দেয়, একটি অ্যাপ্লিকেশন ব্যবহার করা আরও সহজ আমি লিঙ্ক শেল এক্সটেনশনের পরামর্শ দিই ।


4
লক্ষ্য DIR তে আমি সিডি, এই কমান্ডটি প্রয়োগ করুন: mklink /d node_modules (source dir)\node_modules
ক্রিসটর্ং

4
আমার দলটি কিছুদিন ধরে এই পদ্ধতিটি ব্যবহার করছে। যদিও আমি প্রকৃতপক্ষে node_modulesপ্রকল্পের ফোল্ডারে না থাকাকে ঘৃণা করি , এটি কাজ করে। node_modulesনতুন কিছু ইনস্টল করার আগে কেবল আসল ফোল্ডারে ব্রাউজ করতে হবে : পি
অ্যান্ড্রু ক্র্যাসওয়েল

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

4
npm installকোনও "সংযুক্ত" অ্যাপ্লিকেশন চলাকালীন নির্ভরতা ছাঁটাই এড়ানো কীভাবে ?
কিওয়ার্টি

4
কিন্তু আমি যখন npm install <new-package>আপনার বর্তমান প্রকল্পের প্যাকেজটিতে নেই সমস্ত প্যাকেজগুলি চালিত করি তখন জসন সরানো হবে।
রোহিত কাউশাল

17

এনপিএম এর পরিবর্তে পিএনএম চেষ্টা করুন ।

পিএনএম হ'ল একবারে কোনও ডিস্কে মডিউলের একটি সংস্করণ সংরক্ষণ করতে হার্ড লিঙ্ক এবং সিমলিংক ব্যবহার করে।

এর সাথে ইনস্টল করুন:

npm install -g pnpm

আপনার বিদ্যমান ইনস্টলেশন আপডেট করতে (এবং উপ ডিরেক্টরি) ব্যবহার করুন:

pnpm recursive install

8

মূল ডিরেক্টরিটি এর মতো দেখতে হবে

node_modules
Project 1
Project 2
Project 3
Project 4

শুধু ফাইল খুলুন Project 1/.angular-cli.json

স্কিমা পরিবর্তন করুন

"$schema": "./node_modules/@angular/cli/lib/config/schema.json",

প্রতি

"$schema": "./../node_modules/@angular/cli/lib/config/schema.json"

এবং node_modulesআপনার প্রকল্প ডিরেক্টরিতে ফাঁকা ফোল্ডার তৈরি করতে ভুলবেন না


আপনি আমার নায়ক. আমি এই এক সপ্তাহ কাটিয়েছি । তোমাকে অনেক ধন্যবাদ!!
এলিজার বার্লিন

5

কিছু নিবন্ধ দেখে মনে হয় যে একক ডিরেক্টরিতে ( ) ডিরেক্টরিতে একাধিক প্রকল্প পরিচালনার জন্য লারনা একটি ভাল সরঞ্জাম tool monorepoএটি প্রতিটি ফোল্ডারে পুরো প্যাকেজগুলি অনুলিপি না করে মডিউল ভাগ করে নেওয়া সমর্থন করে এবং একাধিক প্রকল্পে সেগুলি ইনস্টল করার আদেশ দেয়।

পিএনএম এটি একটি সহজ এবং দক্ষ সরঞ্জাম, যা ইতিমধ্যে অন্যান্য প্রকল্পের জন্য ইনস্টল থাকা মডিউলগুলির সদৃশ হয় না।


0

ধরে নেওয়া যাক যে একটি নোড_মডিউলগুলি থাকাতে এটিতে সমস্ত অ্যাপ্লিকেশনের জন্য সমস্ত প্যাকেজ থাকা উচিত। সুতরাং আপনার অ্যাপ্লিকেশনগুলিও অনন্য প্যাকেজ.জসন এন্ট্রিগুলির বেশিরভাগ ভাগ করবে (কেবলমাত্র নামটি পরিবর্তন করা উচিত)

আমার ধারণাটি নীচের মতো একটি একক মূল এবং একাধিক এসআরসি স্তর হবে

root\package.json
root\node_modules
root\\..
root\app1\src\\..
root\app2\src\\..

আপনি যে সমস্যার মুখোমুখি হতে পারেন তা হ'ল কোনও অ্যাপ্লিকেশনের জন্য জসন (বা tsconfig) ব্যাকআপ রাখা এবং আপনি যখন এটিতে কাজ করবেন তখন সেগুলি পুনরুদ্ধার করবেন বা কোনও অ্যাপ্লিকেশন পরিবেশন করার জন্য আপনার স্টার্টআপ স্ক্রিপ্টগুলি সেটআপ করবেন up


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