আমি অবিচ্ছিন্ন একীকরণের সাথে কাজ করছি এবং এনপিএম সিআই কমান্ডটি আবিষ্কার করেছি ।
আমার কর্মপ্রবাহের জন্য এই কমান্ডটি ব্যবহার করে কী কী সুবিধা রয়েছে তা আমি বুঝতে পারি না।
এটা কি দ্রুত? এটি কি পরীক্ষাটিকে আরও শক্ত, ঠিক আছে এবং পরে করে?
আমি অবিচ্ছিন্ন একীকরণের সাথে কাজ করছি এবং এনপিএম সিআই কমান্ডটি আবিষ্কার করেছি ।
আমার কর্মপ্রবাহের জন্য এই কমান্ডটি ব্যবহার করে কী কী সুবিধা রয়েছে তা আমি বুঝতে পারি না।
এটা কি দ্রুত? এটি কি পরীক্ষাটিকে আরও শক্ত, ঠিক আছে এবং পরে করে?
উত্তর:
থেকে npm ডক্স :
সংক্ষেপে, এনপিএম ইনস্টল এবং এনএমপি সিআই ব্যবহারের মধ্যে প্রধান পার্থক্যগুলি হ'ল:
- প্রকল্পের একটি বিদ্যমান প্যাকেজ-লক.জসন বা এনপিএম-সঙ্কিঙ্ক্র্যাপ.জসন থাকতে হবে।
- যদি প্যাকেজ লকের নির্ভরতা প্যাকেজ.জসনের মধ্যে মেলে না, তবে এনএমপি সিআই প্যাকেজ লকটি আপডেট করার পরিবর্তে একটি ত্রুটির সাথে প্রস্থান করবে।
- এনএমপি সিআই একবারে পুরো প্রকল্পগুলি ইনস্টল করতে পারে: পৃথক নির্ভরতা এই আদেশের সাথে যুক্ত করা যায় না।
- যদি কোনও নোড_মডিউলগুলি ইতিমধ্যে উপস্থিত থাকে তবে এনপিএম সিআই ইনস্টল করার আগে এটি স্বয়ংক্রিয়ভাবে সরানো হবে।
- এটি কখনই প্যাকেজ.জসন বা কোনও প্যাকেজ-লকে লিখবে না: ইনস্টলগুলি মূলত হিমশীতল।
মূলত,
npm install
সার্চ package.json
নির্ভরতা একটি তালিকা তৈরি এবং ব্যবহার package-lock.json
অবহিত এইসব নির্ভরতা সংস্করণ ইনস্টল করার জন্য পারে। যদি নির্ভরতা না থাকে তবে package-lock.json
এটি যুক্ত হবেnpm install
।
npm ci
( সি অনটেনিউস আই নেটগ্রেশনের নামানুসারে) সরাসরি নির্ভরতা ইনস্টল করে package-lock.json
এবং package.json
কেবল কোনও মিল নেই এমন বৈধতা যাচাই করার জন্য ব্যবহার করে । যদি কোনও নির্ভরতা অনুপস্থিত বা বেমানান সংস্করণ থাকে তবে এটি ত্রুটি ছুঁড়ে দেবে ।
npm install
নতুন নির্ভরতা যুক্ত করতে এবং কোনও প্রকল্পের উপর নির্ভরতা আপডেট করতে ব্যবহার করুন। সাধারণত, আপনি নির্ভরতার তালিকা আপডেট করে এমন পরিবর্তনগুলি টেনে নেওয়ার পরে আপনি এটি বিকাশের সময় ব্যবহার করবেন তবে npm ci
এই ক্ষেত্রে এটি ব্যবহার করা ভাল ধারণা হতে পারে ।
আপনার npm ci
যদি একটি ডিস্ট্রিমেন্টিক, পুনরাবৃত্তযোগ্য বিল্ড প্রয়োজন হয় তবে ব্যবহার করুন । উদাহরণস্বরূপ, অবিচ্ছিন্ন একীকরণের সময়, স্বয়ংক্রিয় কাজ ইত্যাদি এবং প্রথমবারের জন্য নির্ভরতা ইনস্টল করার পরিবর্তে npm install
।
npm install
npm-shrinkwrap.json
এবং package-lock.json
(সেই ক্রমে)।node_modules
।package.json
বা package-lock.json
।
npm i packagename
) এটি package.json
নির্ভরতা যুক্ত করতে বা আপডেট করতে লিখতে পারে ।npm i
) এটি package-lock.json
ইতিমধ্যে এই ফাইলে না থাকলে কিছু নির্ভরতার সংস্করণটি লক করতে লিখতে পারে ।npm ci
package-lock.json
বা npm-shrinkwrap.json
উপস্থিত থাকতে হবে।package.json
।node_modules
এবং ইনস্টল করে ।package.json
বা লেখেন না package-lock.json
।npm ci
সম্পূর্ণ নির্ভরতা গাছ তৈরি package-lock.json
বা থেকে উত্পন্ন করার সময় npm-shrinkwrap.json
, নিম্নলিখিত অ্যালগরিদম ( উত্স ) ব্যবহারের npm install
সামগ্রীগুলি আপডেট করেnode_modules
:
load the existing node_modules tree from disk clone the tree fetch the package.json and assorted metadata and add it to the clone walk the clone and add any missing dependencies dependencies will be added as close to the top as is possible without breaking any other modules compare the original tree with the cloned tree and make a list of actions to take to convert one to the other execute all of the actions, deepest first kinds of actions are install, update, remove and move
npm install package
উভয়ই সংশোধন করতে পারে package-lock.json
এবং package.json
যখন npm install
যে কোনও যুক্তিই কেবল সংশোধন করতে পারেpackage-lock.json
npm ci
যে কোনও বিদ্যমান নোড_মডিউল ফোল্ডার মুছবে এবং package-lock.json
প্রতিটি প্যাকেজের নির্দিষ্ট সংস্করণ ইনস্টল করতে ফাইলের উপর নির্ভর করবে। এটি এনপিএম ইনস্টলের চেয়ে উল্লেখযোগ্যভাবে দ্রুত কারণ এটি কিছু বৈশিষ্ট্য এড়িয়ে চলে। সিআই / সিডি পাইপলাইন এবং ডকার বিল্ডগুলির জন্য এটি পরিষ্কার রাষ্ট্র ইনস্টল দুর্দান্ত! আপনি এটি সমস্ত একবারে ইনস্টল করতে ব্যবহার করেন এবং নির্দিষ্ট প্যাকেজগুলি নয়।
আপনার লিঙ্ক করা ডকুমেন্টেশনের সংক্ষিপ্তসার ছিল:
সংক্ষেপে, এনপিএম ইনস্টল এবং এনএমপি সিআই ব্যবহারের মধ্যে প্রধান পার্থক্যগুলি হ'ল:
- প্রকল্পের একটি বিদ্যমান প্যাকেজ-লক.জসন বা এনপিএম-সঙ্কিঙ্ক্র্যাপ.জসন থাকতে হবে।
- যদি প্যাকেজ লকের নির্ভরতা প্যাকেজ.জসনের মধ্যে মেলে না, তবে এনএমপি সিআই প্যাকেজ লকটি আপডেট করার পরিবর্তে একটি ত্রুটির সাথে প্রস্থান করবে।
- এনএমপি সিআই একবারে পুরো প্রকল্পগুলি ইনস্টল করতে পারে: পৃথক নির্ভরতা এই আদেশের সাথে যুক্ত করা যায় না।
- যদি কোনও নোড_মডিউলগুলি ইতিমধ্যে উপস্থিত থাকে তবে এনপিএম সিআই ইনস্টল করার আগে এটি স্বয়ংক্রিয়ভাবে সরানো হবে।
- এটি কখনই প্যাকেজ.জসন বা কোনও প্যাকেজ-লকে লিখবে না: ইনস্টলগুলি মূলত হিমশীতল।
কমান্ডগুলি কার্যকারিতাতে খুব অনুরূপ তবে পার্থক্যটি আপনার package.json
এবং package-lock.json
ফাইলগুলিতে নির্দিষ্ট করা নির্ভরতা ইনস্টল করার জন্য গৃহীত পদ্ধতির মধ্যে ।
npm ci
আপনার অ্যাপের সমস্ত নির্ভরতাগুলির একটি পরিষ্কার ইনস্টল সম্পাদন করে যেখানে npm install
সিস্টেমে ইতিমধ্যে উপস্থিত থাকলে কিছু ইনস্টলেশন এড়িয়ে যেতে পারে। সিস্টেমে ইতোমধ্যে ইনস্টল করা সংস্করণটি ইনস্টল করার জন্য আপনার package.json
উদ্দিষ্ট উদ্দেশ্য না থাকলে ইন্সটল করা সংস্করণটি ' প্রয়োজনীয় ' সংস্করণ থেকে পৃথক হলে সমস্যা দেখা দিতে পারে ।
অন্যান্য পার্থক্যগুলি npm ci
হ'ল এটি কখনও আপনার package*.json
ফাইলগুলিকে স্পর্শ করে না । নির্ভরশীলতা সংস্করণগুলি package.json
এবং package-lock.json
ফাইলগুলিতে না মেলে এটি ইনস্টলেশন বন্ধ করে দেয় এবং একটি ত্রুটি দেখায় ।
আপনি এখানে অফিসিয়াল ডক্স থেকে আরও ভাল ব্যাখ্যা পড়তে পারেন ।
অতিরিক্তভাবে, আপনি এখানে প্যাকেজ লক সম্পর্কে পড়তে চাইতে পারেন ।
এটি মনে রাখবেন যে আল্পাইন এর মতো হালকা নোড ডকারের চিত্রগুলিতে পাইথন ইনস্টল করা নেই যা নির্ভরতা node-gyp
যা ব্যবহার করে npm ci
।
আমি মনে করি এটি কিছুটা মতামতযুক্ত যে npm ci
কাজ করার জন্য আপনাকে আপনার বিল্ডে নির্ভরতা হিসাবে পাইথন ইনস্টল করতে হবে।
এখানে আরও তথ্য ডকার এবং এনপিএম - জিপ ইআরআর! ঠিক নাই
আপনার এগুলি বিভিন্ন পরিস্থিতিতে ব্যবহার করা উচিত।
npm install
আপনি node_modules
ডিরেক্টরি ক্যাশে করতে চান যখন বিকাশের জন্য এবং সিআই মধ্যে দুর্দান্ত । কখন এটি ব্যবহার করবেন? আপনি যদি অন্য লোকদের ব্যবহারের জন্য প্যাকেজ তৈরি করে থাকেন তবে আপনি এটি করতে পারেন (আপনি এই node_modules
জাতীয় প্রকাশে অন্তর্ভুক্ত করবেন না ) । ক্যাচিং সম্পর্কিত, সতর্কতা অবলম্বন করুন, যদি আপনি Node.js
মনে রাখার বিভিন্ন সংস্করণ সমর্থন করার পরিকল্পনা করেন node_modules
তবে Node.js
রানটাইম প্রয়োজনীয়তার মধ্যে পার্থক্যের কারণে এটি পুনরায় ইনস্টল করতে হতে পারে । আপনি যদি একটি সংস্করণে লেগে থাকতে চান তবে সর্বশেষতমটিকে আটকে দিন LTS
।
npm ci
আপনি যখন কোনও প্রোডাকশন অ্যাপ্লিকেশন পরীক্ষা করতে এবং প্রকাশ করতে চান তখন এটি ব্যবহার করা উচিত (একটি চূড়ান্ত পণ্য, অন্য প্যাকেজগুলি ব্যবহার করবেন না) যেহেতু আপনার ইনস্টলেশনটি যতটা সম্ভব নির্ধারিত হওয়া জরুরি, এই ইনস্টলটি আরও বেশি সময় লাগবে তবে শেষ পর্যন্ত তৈরি হবে আপনার অ্যাপ্লিকেশন আরও নির্ভরযোগ্য (আপনি node_modules
যেমন একটি রিলিজ অন্তর্ভুক্ত ) । LTS
সংস্করণ সহ স্টিক Node.js
।
বোনাস: আপনি এটি কীভাবে জটিল করতে চান তার উপর নির্ভর করে আপনি তাদের মিশ্রিত করতে পারেন। ইন বৈশিষ্ট্যটি শাখা অন git
আপনি কি ক্যাশে পারে node_modules
আপনার দলগুলির উৎপাদনশীলতা বৃদ্ধি এবং একত্রীকরণ অনুরোধ এবং মাস্টার শাখা উপর নির্ভর উপর npm ci
একটি নির্ণায়ক ফলাফল জন্য।
npm install
প্যাকেজ.জসনে লিখতে পারতাম না । আপনি কি জানেন যে এটি এখানে কী লিখতে পারে?