এনপিএম প্যাকেজের স্থানীয় ইনস্টলেশনগুলির জন্য কাস্টম অবস্থান কীভাবে সেট করবেন?


177

npm installকমান্ড ফ্ল্যাগ বা পরিবেশ পরিবর্তনশীলের মাধ্যমে কাস্টম প্যাকেজ গন্তব্য নির্দিষ্ট করা সম্ভব ?

ডিফল্টরূপে, এনপিএম স্থানীয় ইনস্টলগুলি node_modulesবর্তমান ডিরেক্টরিতে শেষ হয় তবে node_modulesউদাহরণস্বরূপ, আমি এটি একটি ভিন্ন ডিরেক্টরিতে ইনস্টল করতে চাই vendor/node_modules। আমি কীভাবে এটি ঘটতে পারি?


তুমি অর্জন করার জন্য কি চেষ্টা করতেছ? এটি এখানে আলোচনা করা হয়েছে: stackoverflow.com/questions/13668097/...
পাসকাল Belloncle

10
@ প্যাসালবেলনকল: এর সাব-ডিরেক্টরিতে প্যাকেজ ইনস্টল করার পরিবর্তে ./node_modules, আমি এনপিএম তাদের সাব-ডিরেক্টরিতে ইনস্টল করতে চাই ./vendor/node_modules। (বা এটি জানাতে হবে যে এটি কনফিগারযোগ্য নয়))
pje

1
আমি বুঝতে পেরেছিলাম আপনি এটি করতে চান যা বাক্সের বাইরে সম্ভব বলে আমি মনে করি না। প্লাস প্রয়োজন হয় না কাজ করে না। সুতরাং আমি আপনাকে জিজ্ঞাসা করছিলাম কেন আপনি এটি করতে চেয়েছিলেন। আপনি যা করতে চান তার বিকল্প সমাধান হতে পারে।
পাস্কেল বেলোন্কেল

1
আমি সম্পূর্ণভাবে তার বাইনারিগুলির জন্য একটি প্যাকেজ ইনস্টল করছি (অর্থাত্ এটি কেবল কমান্ড লাইনে ব্যবহৃত হবে এবং কখনই required) না তবে আমি বিশ্বব্যাপী এটি ইনস্টল করতে চাই না।
pje

আমি দেখি. নীচে আমার পরামর্শ দেখুন।
পাস্কেল বেলনকাল

উত্তর:


180

টি এল; ডিআর

আপনি --prefixপতাকা এবং --global* পতাকা ব্যবহার করে এটি করতে পারেন ।

pje@friendbear:~/foo $ npm install bower -g --prefix ./vendor/node_modules
bower@0.7.0 /Users/pje/foo/vendor/node_modules/bower

* যদিও এটি "বৈশ্বিক" ইনস্টলেশন, ইনস্টলড বিনগুলি ~/foo/vendor/node_modulesবিদ্যমান না থাকলে কমান্ড লাইনের মাধ্যমে অ্যাক্সেসযোগ্য হবে না PATH

টি এল; আর

এর প্রতিটি কনফিগারযোগ্য বৈশিষ্ট্য npm ছয়টি পৃথক স্থানে যেকোনটিতে সেট করা যায়। অগ্রাধিকার ক্রম:

  • কমান্ড-লাইন পতাকা: --prefix ./vendor/node_modules
  • পরিবেশ পরিবর্তনশীল: NPM_CONFIG_PREFIX=./vendor/node_modules
  • ব্যবহারকারী কনফিগারেশন ফাইল: $HOME/.npmrcবাuserconfig প্যারাম
  • গ্লোবাল কনফিগারেশন ফাইল: $PREFIX/etc/npmrcবাuserconfig প্যারাম
  • অন্তর্নির্মিত কনফিগারেশন ফাইল: path/to/npm/itself/npmrc
  • ডিফল্ট কনফিগারেশন: নোড_মডিউলস / এনপিএমকোনফ / কনফিগারেশন-ডিফএস.জেএস

ডিফল্টরূপে, স্থানীয়ভাবে ইনস্টল হওয়া প্যাকেজগুলি প্রবেশ করে ./node_modules। বিশ্বব্যাপী বেশী ঢোকা prefixকনফিগ পরিবর্তনশীল (/usr/local ডিফল্টরূপে)।

আপনি npm config listআপনার বর্তমান কনফিগারেশনটি দেখতে এবং npm config editএটি পরিবর্তন করতে দৌড়াতে পারেন ।

পুনশ্চ

সাধারণভাবে, npmএর ডকুমেন্টেশন সত্যই সহায়ক। ফোল্ডার অধ্যায় npm একটি ভাল কাঠামোগত ওভারভিউ এবং কনফিগ অধ্যায় এই প্রশ্নের উত্তর।


2
আমি পরীক্ষা হিসাবে, উপরোক্ত কমান্ডের অনুসরণ আসলে, এটা মধ্যে ইনস্টল করা হবে না ./vendor/node_modules/lib/bowerব্যবহারnpm#3.8.0
ই-মেঘ

2
এটি করার সময়, আমি ত্রুটি No version provided in package.json
পাচ্ছি

আপনি লিখুন bins won't be accessible through the command line। প্রোগ্রামটি অবশ্যই পুরো পথটি ব্যবহার করে শুরু করা যেতে পারে npm install eslint@3.4.0 -g --prefix c:\my_npm` calling সি: \ my_npm \ এসলিন্ট
বার্নহার্ড ডাবলার

13
একটি প্যাকেজ.জসন ফাইলের সাথে কি অনুরূপ কিছু অর্জন করা সম্ভব? উদাহরণস্বরূপ, যদি আমি npm installপ্যাকেজ.জসন ফাইল সহ ডিরেক্টরি এ চালিত করি , ডিরেক্টরি বিতে প্যাকেজগুলি ইনস্টল করা হবে বলে মনে হয় এই সমাধানটি পৃথক প্যাকেজ ইনস্টল করার জন্য।
রায়ান-নিল মেস

1
এই পদ্ধতিটি ব্যবহার করে সমস্ত নির্ভরতা ইনস্টল করার কোনও উপায় আছে কি? npm installস্থানীয়ভাবে নির্ভরতা ইনস্টল করে। npm install X -g -prefix "..."উপসর্গটিতে মডিউল এক্স npm install -g -prefix "..."ইনস্টল করে, বর্তমান প্যাকেজটিকে উপসর্গটিতে ইনস্টল করে।
আনানফায়

28

আপনি যদি কনফিগারেশনে এটি চান তবে আপনি এনপিএম কনফিগারটি এর মতো সেট করতে পারেন:

npm config set prefix "$(pwd)/vendor/node_modules"

অথবা

npm config set prefix "$HOME/vendor/node_modules"

আপনার কনফিগারেশন পরীক্ষা করে দেখুন

npm config ls -l

অথবা যেমন @ পিজে বলেছেন এবং --prefixপতাকাটি ব্যবহার করুন


4
আমি বিশ্বাস করি এটি বিশ্বব্যাপী উপসর্গটি সেট করে? এমনটি npm installএখনও স্থানীয়ভাবে ইনস্টল করবে ./node_modulesকিন্তু npm install -gইনস্টল করা হবে "$(pwd)/vendor/node_modules"। আমি সেটিংসটি এটির পরে ভুলে গিয়ে ভাবতে পারি, আমার বিশ্বব্যাপী প্যাকেজগুলি কেন অদ্ভুতভাবে আচরণ করছে তা ভেবে পরে ফিরে আসছি।
আনানফায় 4'18

13

ওএসএক্সের জন্য, আপনি আপনার ব্যবহারকারীর $HOME(সম্ভবত / ব্যবহারকারী / আপনার নাম /) যেতে পারেন এবং এটি ইতিমধ্যে উপস্থিত না থাকলে একটি তৈরি করুন.npmrc ফাইল (এনপিএম ব্যবহারকারী কনফিগারেশনের জন্য ব্যবহার করে এমন একটি ফাইল) তৈরি করতে এবং আপনার এনপিএম প্যাকেজগুলির জন্য একটি ডিরেক্টরি তৈরি করতে পারেন ইনস্টল করা হবে (যেমন, / ব্যবহারকারী / আপনার নাম / এনপিএম)। .Npmrc ফাইলটিতে আপনার নতুন এনপিএম ডিরেক্টরিতে "উপসর্গ" সেট করুন, এটি সেখানে "বিশ্বব্যাপী" ইনস্টল করা এনপিএম প্যাকেজ ইনস্টল হবে; এই "গ্লোবাল" প্যাকেজগুলি অবশ্যই আপনার ব্যবহারকারী অ্যাকাউন্টে উপলব্ধ থাকবে।

.Npmrc এ:

prefix=${HOME}/npm

তারপরে কমান্ড লাইন থেকে এই কমান্ডটি চালান:

npm config ls -l

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

সুরক্ষার জন্য, আমি আপনার ব্যবহারকারীর অ্যাকাউন্টের এনপিএম আচরণটি আপনার /usr/localফোল্ডারগুলিকে ডুবিয়ে দেওয়ার বিষয়ে কনফিগার করার জন্য পরামর্শ দিচ্ছি, যা আমি অন্য কোথাও প্রস্তাবিত দেখেছি।


9

উদাহরণস্বরূপ উইন্ডোজ On-তে নিম্নলিখিত কমান্ড / ক্রিয়াকলাপগুলির সেট ব্যবহার করা যেতে পারে।

একটি ব্যক্তিগত পরিবেশ পরিবর্তনশীল তৈরি করুন, ডাবল ব্যাকস্ল্যাশগুলি বাধ্যতামূলক:

  • পরিবর্তনশীল নাম: %NPM_HOME%
  • পরিবর্তনশীল মান: C:\\SomeFolder\\SubFolder\\

এখন, নতুন ফোল্ডারে কনফিগার মানগুলি সেট করুন (মডেল ফাইলের নাম):

  • এনপিএম ফোল্ডারটি সেট করুন

npm config set prefix "%NPM_HOME%\\npm"

  • এনপিএম-ক্যাশে ফোল্ডারটি সেট করুন

npm config set cache "%NPM_HOME%\\npm-cache"

  • এনপিএম অস্থায়ী ফোল্ডার সেট করুন

npm config set tmp "%NPM_HOME%\\temp"

Allyচ্ছিকভাবে, আপনি কনফিগারটি পরিবর্তন করার আগে মূল ফোল্ডারগুলির বিষয়বস্তু মুছে ফেলতে পারেন ।

  • এনপিএম-ক্যাশে মুছুন npm cache clear

  • এনপিএম মডিউলগুলি তালিকাভুক্ত করুন npm -g ls

  • এনপিএম মডিউলগুলি মুছুন npm -g rm name_of_package1 name_of_package2


1
ধন্যবাদ, আমি পদক্ষেপগুলি অনুসরণ করি। তবে এটি সি: /% এনপিএম_হোম% / এনপিএম ইত্যাদির পরিবর্তে সি: / এনপিএম_হোম / এনপিএম ইত্যাদি নামে একটি ডিরেক্টরি তৈরি করে
জে

6

ভাগ করে নেওয়ার সাথে নির্ভরশীলতা সহ বেশ কয়েকটি প্রকল্প DRYer হওয়ার জন্য এটি অনুসন্ধান করার পরে আমি খুঁজে পেয়েছি:

  • স্থানীয়ভাবে ইনস্টল করা আপনার যে কোনও মাধ্যমে ব্যবহার করতে চান তার নোড উপায় require()
  • আপনার পথে আপনি যে বাইনারি চান তা বিশ্বব্যাপী ইনস্টল করা, তবে এটি কোনও কিছুর জন্য নয় require()
  • উপসর্গ ব্যবহারের অর্থ আপনার যথাযথ binএবং manপাথ যুক্ত করতে হবে$PATH
  • npm link( তথ্য ) গ্লোবালগুলির উত্স হিসাবে আপনাকে একটি স্থানীয় ইনস্টল ব্যবহার করতে দেয়

Ode নোড পথে আটকে থাকুন এবং স্থানীয়ভাবে ইনস্টল করুন

সুত্র:

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