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


587

আমার প্যাকেজ.জসন ফাইলটিতে এটি রয়েছে (সংক্ষিপ্ত সংস্করণ):

{
  "name": "a-module",
  "version": "0.0.1",
  "dependencies": {
    "coffee-script":      ">= 1.1.3"
  },
  "devDependencies": {
    "stylus":             ">= 0.17.0"
  }
}

আমি ম্যাক 10.6.8 এ এনপিএম সংস্করণ 1.1.1 ব্যবহার করছি।

যখন আমি প্রকল্পের মূল থেকে নিম্নলিখিত কমান্ডটি চালিত করি, এটি dependencies এবং উভয়ই ইনস্টল করে devDependencies:

npm install

এই ধারণাটি এই কমান্ডটি ইনস্টল করে দিয়েছিল devDependencies:

npm install --dev

আমি কীভাবে এটি npm installকেবলমাত্র ইনস্টল করব dependencies(সুতরাং উত্পাদন পরিবেশ কেবল সেই মডিউলগুলি পায়), তবে কিছু npm install --devইনস্টল করার মতো dependenciesএবং devDependenciesকীভাবে?


1
ডক অনুসারে, আপনি ঠিক বলেছেন - দেবদেব ডেডেপগুলি ইনস্টল করেন, অন্যথায়, কেবল ডিপগুলি। npmjs.org/doc/json.html । আমি জানি এটি নামী প্যাকেজগুলির জন্য কাজ করে, কমপক্ষে।
এমএনএ

1
যদি আপনি 2015 সালে এই প্রশ্নটি জুড়ে আসেন, - - সেভ-ডেভ স্যুইচ এই প্রশ্নটিতে যেমনটি জিজ্ঞাসা করেছিল ঠিক তেমন কৌশল করে।
আনন্দ

1
এই উত্তর stackoverflow.com/a/22004559/3718119dependencies এবং devDependenciesতাদের প্রতিটি ব্যবহার করা হয় এবং কখন এবং এর মধ্যে পার্থক্য সম্পর্কে একটি দুর্দান্ত ব্যাখ্যা দেয় ।
কোয়াসফট

উত্তর:


844

npm installকমান্ড ইনস্টল করবে devDependenciesঅন্যান্য বরাবর dependenciesযখন একটি প্যাকেজ ডিরেক্টরির ভিতরে চালানোর জন্য, একটি উন্নয়ন পরিবেশ (ডিফল্ট) হবে।

npm install --only=prod(অথবা --only=production) শুধুমাত্র ইনস্টল করতে ব্যবহার করুন dependencies, এবং পরিবেশের ভেরিয়েবলের devDependencies,মান নির্বিশেষে NODE_ENV

সূত্র: এনপিএম ডক্স

দ্রষ্টব্য: এনপিএম (2015-08-13) এর v3.3.0 এর আগে, বিকল্পটি ডাকা হয়েছিল --production, যেমন npm install --production


2
অ্যাগেটের যুক্তি সম্ভবত ডেভডিপেন্সিগুলি সরিয়ে ফেলতে পারে যাতে গ্রাহকরা আপনার প্যাকেজটি ইনস্টল npm install yourpackage.tgzকরে ডিভডিপেন্ডেন্স না পান। যাইহোক, ইতিমধ্যে ক্ষেত্রে এটি। নীচে কেভিন কক্সের উত্তর দেখুন ( স্ট্যাকওভারফ্লো . com / a / 15826602 / 825588 )।
জোহান

5
npmjs.org/doc/cli/npm-install.html "ডিফল্টরূপে, এনএমপি ইনস্টল নির্ভরতা হিসাবে তালিকাভুক্ত সমস্ত মডিউল ইনস্টল করবে -
টমবায়ার

14
হে ভগবান. আমি NODE_ENV=productionযা করছিলাম তা থেকে সম্পূর্ণরূপে আমার কাছে ছিল এবং কেন npm installনির্ভরতা ইনস্টল করবে না তা আমার জীবনের জন্য অনুধাবন করতে পারিনি। পুরো উত্তরের জন্য ধন্যবাদ।
এেন্ড্রু

1
npm install --dev শুধুমাত্র দেব নির্ভরতা ইনস্টল করবে
Rustem K

10
এনপিএম ৩.৩ এবং এর পরে: এনপিএম ওয়ার্ন ইনস্টল করার --devবিকল্পটি ব্যবহারের অবমূল্যায়ন করা হয়েছে। --only=devপরিবর্তে ব্যবহার করুন।
srcspider

232

আমিও সেই সমস্যায় পড়েছি! এনপিএম ইনস্টল কিছুটা বিভ্রান্তিকর এবং ওয়েব পোস্টগুলি -d / - দেব পতাকা আনতে থাকে যেন একটি স্পষ্ট 'বিকাশ' ইনস্টল মোড রয়েছে।

  • npm install" নির্ভরতা " এবং " ডেভিনির্ভরতা " উভয়ই ইনস্টল করবে

  • npm install --productionশুধুমাত্র " নির্ভরতা " ইনস্টল করা হবে

  • npm install --devশুধুমাত্র " ডিভডিপেন্ডেন্স " ইনস্টল করবে


29
সতর্কতা: যদি NODE_ENVসেট করা থাকে productionএবং আপনি চালনা করেন তবে npm installএটি ডেভ নির্ভরতা ইনস্টল করবে না। আমি আমার ডকফাইলে এই সমস্যাটি ছড়িয়েছি।
ভান

1
@ ভৌগান আমি এটিতেও ছুটে এসেছি, দৌড়ানোর মাধ্যমে সমাধান করা যেতে পারে npm --production=false install(যদিও এটি
দেব

138

নতুন বিকল্পটি হ'ল:

npm install --only=prod

আপনি যদি কেবলমাত্র ডিডিপেন্ডেন্সগুলি ইনস্টল করতে চান:

npm install --only=dev

1
এটি প্রশ্নের বিপরীতে উত্তর দেয়। ডিপি নির্ভরতা কীভাবে ইনস্টল করবেন না ওপি জিজ্ঞাসা করছে।
musicin3d

2
আপনি আংশিকভাবে @ মিউজিকিন 3 ডি সঠিক, এই কারণেই প্রথম অংশে আমি উত্তর দিয়েছি কীভাবে কেবলমাত্র প্রোড কেবলমাত্র নির্ভরতা ইনস্টল করতে হয় এবং দ্বিতীয় অংশে কীভাবে কেবলমাত্র কেবলমাত্র ডিভ নির্ভরশীলতা ইনস্টল করতে হয়।
ক্লোশিওর

5
এই যে. @ User1614572 সম্পর্কে অংশটি যুক্ত করার আগে আমি এই মন্তব্যটি রেখেছি --only=prod। আপনি স্যার আংশিকভাবে সঠিক। ; পি
সঙ্গীত

আমরা স্থাপনার জন্য পৃথক নির্ভরতা অন্তর্ভুক্ত করতে পারি?
জিভা জেএসবি

1
এটি একটি মন্তব্য নয়, উত্তর নয়। আমি আমার সমস্ত মন্তব্য পর্যায়ক্রমে যাচাই করি না। আমি বহু বছর আগের লোকগুলিকে মন্তব্যগুলি আপডেট করতে যেতে দেখিনি । আপনি এখানে মূলত সমালোচনা করতে এসেছিলেন যে আমি আমার মন্তব্যে একটি বছর রেখেছি। আমি আর প্রতিক্রিয়া হবে না। অন্য লোককে ট্রোলিং করতে মজা করুন।
জ্যাকস ジ ャ ッ ク

47

আপনি যদি এই পোস্টটি 2016 সালে পড়ে থাকেন তবে দয়া করে ব্যবহার করে যা চান তা অর্জন করুন

--only={prod[uction]|dev[elopment]} 

যুক্তিটি হ'ল NODE_ENV নির্বিশেষে কেবলমাত্র ডিভডিপেন্ডেন্স বা কেবল অ-ডিভেন্ডডেপেন্ডেন্সগুলি ইনস্টল করতে পারে।

থেকে: https://docs.npmjs.com/cli/install


"পোস্ট" কেন মূলধন করবেন? docs.npmjs.com/cli/install স্পষ্টভাবেই নথির দুটি--production এবং --only={prod[uction]|dev[elopment]}
ড্যান ড্যাসক্লেস্কু

32

আপনি যদি ইতিমধ্যে আপনার সমস্ত নির্ভরতা ইনস্টল করে রেখেছেন এবং আপনি আবার এনপিএম থেকে আপনার প্রোডাকশন প্যাকেজগুলি ডাউনলোড না করে এড়াতে চান তবে আপনি কেবল টাইপ করতে পারেন:

npm prune --production

এটি আপনার node_modulesফোল্ডার থেকে আপনার ডেভ নির্ভরতা অপসারণ করবে , আপনি যদি দুটি ধাপের মতো প্রক্রিয়া স্বয়ংক্রিয়ভাবে চেষ্টা করার চেষ্টা করেন তবে তা সহায়ক

  1. ডেভ নির্ভরতা ব্যবহার করে আমার প্রকল্পটি ওয়েবপ্যাক করুন
  2. কেবলমাত্র উত্পাদন মডিউল ব্যবহার করে একটি ডকার চিত্র তৈরি করুন

চলমান npm pruneমধ্যবর্তী আপনি সবকিছু পুনরায় ইনস্টল করা থেকে রক্ষা করবে!


19

"এনএমপি ইনস্টল" ব্যবহার করার সময় মডিউলগুলি লোড করা হয় এবং আপনার অ্যাপ্লিকেশন জুড়ে উপলভ্য হয় যদি তারা "ডেভিনির্ভরতা" বা "নির্ভরতা" হয় না। এই ধারণার যোগফল: আপনার প্যাকেজ.জসন নির্ভরতা (যে কোনও ধরণের) হিসাবে সংজ্ঞায়িত করে যা কিছু নোড_মডিউলগুলিতে ইনস্টল হয়ে যায়।

নির্ভরতা / দেবনির্ভরতা / alচ্ছিক নির্ভরশীলতার মধ্যে পার্থক্যের উদ্দেশ্য হ'ল আপনার কোডের গ্রাহকরা এই সংস্থানগুলি ইনস্টল করতে ডাব্লু / এনপিএম করতে পারেন।

ডকুমেন্টেশন অনুযায়ী: https://npmjs.org/doc/json.html ...

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

এই ক্ষেত্রে, এই অতিরিক্ত আইটেমগুলিকে ডেভডিপেন্ডেন্সি হ্যাশে তালিকাভুক্ত করা ভাল।

--Dev কনফিগারেশন পতাকা সেট করা থাকলে এই জিনিসগুলি ইনস্টল করা হবে। এই ফ্ল্যাগটি এনএমপি লিঙ্কটি করার সময় বা প্যাকেজের মূল থেকে এনপিএম ইনস্টল করার সময় স্বয়ংক্রিয়ভাবে সেট হয়ে যায় এবং অন্য কোনও এনপিএম কনফিগারেশন প্যারামের মতো পরিচালনা করা যায়। বিষয়ে আরও তথ্যের জন্য কনফিগারেশন (1) দেখুন।

তবে, এই প্রশ্নের সমাধানের জন্য, আপনি যদি কেবল এনপিএম ব্যবহার করে "নির্ভরতা" ইনস্টল করতে চান, নিম্নলিখিত কমান্ডটি হ'ল:

npm install --production

গিট কমিট দেখে এই বিষয়টি নিশ্চিত করা যায় যা এই ফিল্টারটি যুক্ত করেছে (এই কার্যকারিতাটি সরবরাহ করতে কিছু অন্যান্য ফিল্টার [নীচে তালিকাবদ্ধ] সহ))

বিকল্প ফিল্টারগুলি যা এনপিএম দ্বারা ব্যবহৃত হতে পারে:

--save          => updates dependencies entries in the {{{json}}} file
--force         => force fetching remote entries if they exist on disk 
--force-latest  => force latest version on conflict
--production    => do NOT install project devDependencies
--no-color      => do not print colors

@dmarr এনপিএম ইনস্টল - উত্পাদনের চেষ্টা করুন


16

প্যাকেজের অভ্যন্তর থেকে ইনস্টল করার সময় এনএমপি ডেভ নির্ভরতা ইনস্টল করবে (যদি package.jsonবর্তমান ডিরেক্টরিতে থাকে)। যদি এটি অন্য কোনও স্থান থেকে (এনপিএম রেজিস্ট্রি, গিট রেপো, ফাইল সিস্টেমের বিভিন্ন অবস্থান) থেকে আসে তবে এটি কেবল নির্ভরতা ইনস্টল করে।


আপনি দয়া করে সংস্কার করতে পারেন? আমি মনে করি আপনি আপনার প্রথম বন্ধনে ভুল করেছেন, আমি মনে করি আপনি এটি বন্ধ করতে ভুলে গিয়েছিলেন এবং আপনার ফ্রেসটি আমার কাছে তেমন কোনও অর্থ দেয় না (স্থানীয় নাগরিক স্পিকার)। রোহান সিংহ উত্তরের অধীনে জোহানের মন্তব্য আমাকে আপনার উত্তরটি দেখার দিকে ইঙ্গিত করেছিল (কারণ আমার সন্দেহ হ'ল অ্যাগেটের সন্দেহ একই ছিল), এবং কোনও সাফল্য নেই। আমি এখনও তা পাই না যে কীভাবে npm install some-moduleডেভ निर्भरতা ইনস্টল করবে না some-module
রাফায়েল আইং

ধন্যবাদ, স্থির। আমি আপনার বাকি প্রশ্নটি বুঝতে পারি না।
কেভিন কক্স

3

আমি খুঁজে পেয়েছি যে নোড অ্যাডনযুক্ত প্যাকেজের জন্য ডেভ নির্ভরতা ইনস্টল করার চেষ্টা করার সময়, এনপিএল ইনস্টল - ডিভ চলার সময় আপনি অ্যাডন তৈরি করা এড়াতে পারবেন না এমনকি আপনি কেবল ডিডিনির্ভরতাগুলি ইনস্টল করতে চান। সুতরাং, আমাকে এনপিএম এর পিছনে যেতে হয়েছিল:

node -e 'console.log( Object.keys( require( "./package.json" ).devDependencies ) );' | \
sed  -e "s/^[^']*'//" -e "s/'.*$//" | \
xargs npm install

বা, আরও ভাল (এবং আরও সংক্ষিপ্তভাবে) এখনও,

node -e 'Object.keys( require( "./package.json" ).devDependencies )
.map( function( item ){ console.log( item ) } );' | xargs npm install

3

ব্যবহার করুন npm install packageName --saveএই প্যাকেজ যোগ হবে নির্ভরতা , যদি আপনি ব্যবহার npm install packageName --save-devতারপর, এটা devDependencies

npm install packageName --save-devবিকাশের উদ্দেশ্যে প্যাকেজ যুক্ত করার জন্য ব্যবহার করা উচিত। টিডিডি প্যাকেজ যুক্ত করার মতো (চই, মোচা ইত্যাদি)। যা উত্পাদনে নয়, উন্নয়নে ব্যবহৃত হয়।


ওপিতে কোনও নির্ভরতা সাশ্রয় করে না package.jsonতবে একবারে এই নির্ভরতা ইতিমধ্যে সংরক্ষণ করা হয় , তবে কীভাবে npmকেবলমাত্র একটি নির্দিষ্ট ধরণের নির্ভরতা ইনস্টল করতে বাধ্য করা যায়। আমি যখন আপনার উত্তরটি এখানে পড়ি তখন আমি এমন কোনও কিছুই শিখি না যা ওপির দ্বারা উত্পন্ন সমস্যাটি সমাধানে সহায়তা করে।
লুই

3

এটি উল্লেখ করার মতো যে আপনি NODE_ENVএকই ফল অর্জনের জন্য পরিবেশ পরিবর্তনশীলটি ব্যবহার করতে পারেন । বিশেষত দরকারী যদি আপনি আপনার নোড অ্যাপ্লিকেশনটি (যেমন ডকার) ধারক করে রাখেন।

NODE_ENV=production npm install

উপরের কোডটি আপনার সমস্ত নির্ভরতা ইনস্টল করবে তবে ডেভগুলি (যেমন devDependencies)।

আপনার Dockerfileআরও তথ্যে যদি পরিবেশের ভেরিয়েবলগুলি ব্যবহার করতে হয় তবে এটি এখানে পাওয়া যাবে

যখনই প্রয়োজন হয় পরিবেশের ভেরিয়েবলগুলি ওভাররাইট করা সহজ (যেমন আপনি যদি নিজের পরীক্ষা স্যুট ট্র্যাভিস সিআই-তে চালাতে চান)। যদি এমনটি হয় তবে আপনি এই জাতীয় কিছু করতে পারতেন:

docker run -v $(pwd):/usr/src/app --rm -it -e NODE_ENV=production node:8 npm install

এনপিএম ডকুমেন্টেশন এখানে

উৎপাদন

  • ডিফল্ট: মিথ্যা
  • প্রকার: "উত্পাদন" মোডে চলার জন্য বুলিয়ান সেটকে সত্য করে দিন।

    1. কোনও যুক্তি ছাড়াই স্থানীয় এনপিএম ইনস্টল চলাকালীন শীর্ষস্থানীয় স্তরে ডেভিনিডেন্সিগুলি ইনস্টল করা হয় না।
    2. লাইফাইসাইকেল স্ক্রিপ্টগুলির জন্য NODE_ENV = "উত্পাদন" সেট করুন।

শুভ ধারককরণ =)


3

আমি ব্যবহার করার পরামর্শ দিচ্ছি npm ci। আপনি যদি কেবলমাত্র উত্পাদন-প্রয়োজনীয় প্যাকেজগুলি ইনস্টল করতে চান (যেমন লিখেছেন - ছাড়াই devDependencies) তবে:

npm ci --only=production

অথবা

NODE_ENV=production npm ci

আপনি যদি ওল্ডস্কুল পছন্দ করেন npm installতবে:

npm install --production

অথবা

NODE_ENV=production npm install

আপনার কেন ব্যবহার করা উচিত তা এখানে উত্তরের উত্তরnpm ci


শীতল, এটি npm ciপাশাপাশি কাজ করে না, শুধু নয় npm install!
ক্লেসুন

2

বাছাই করা উত্তরের যোগ করতে হবে: এখন পর্যন্ত, npm installএকটি প্যাকেজ ডিরেক্টরিতে (ধারণ করে package.json) ডেভ ডিপেন্ডেনসগুলি ইনস্টল করবে, তবে npm install -gসেগুলি ইনস্টল করবে না।


7
হ্যাঁ, -gইনস্টল করবে না devDependencies, তবে এটি বিশ্বব্যাপী প্যাকেজগুলি ইনস্টল করে, যা প্রায়শই উদ্দেশ্যযুক্ত ফলাফল নয়।
বারদী হার্বো

0

npm install --productionউত্পাদনের জন্য প্রয়োজনীয় নোড মডিউলগুলি ইনস্টল করার সঠিক উপায়। আরও তথ্যের জন্য ডকুমেন্টেশন চেক করুন


-1

এখন আপনার কাছে এনপিএম 5+ এর সাথে প্যাকেজ-লক.জসন থাকলে সমস্যা রয়েছে। ব্যবহারের আগে আপনাকে এটি সরিয়ে ফেলতে হবে npm install --production


-1
npm install --dev will install dev dependencies

এবং, কেবল নির্ভরতা ইনস্টল করতে প্রশ্ন অনুসারে, নিম্নলিখিত আদেশটি সাহায্য করবে

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