কীভাবে নিক্সস-এ এনপিএম প্যাকেজ ইনস্টল করবেন?


10

নিক্সস-এ, আমি চালিয়ে প্যাকেজটি yarnযথারীতি ইনস্টল করেছি $ nix-env -i yarn। এখন আমি চালাতে করছি yarnমাধ্যমে $ yarn start। তবে এটি আমাকে নিম্নলিখিত ত্রুটির দিকে নিয়ে যায়।

$ yarn start
    yarn start v0.20.3
    $ webpack-dev-server --env dev 
    sh: webpack-dev-server: command not found
    error Command failed with exit code 127.

আমি যখন webpack-dev-serverআমার স্বাভাবিক নিক্সস উপায়ে ইনস্টল করার চেষ্টা করি তখন আমি একটি 'ম্যাচ নো ডেরিভেশন' ত্রুটি পাই।

$ nix-env -i webpack-dev-server
error: selector ‘webpack-dev-server’ matches no derivations

আমি পড়লাম এটি webpack-dev-serverএকটি এনপিএম প্যাকেজ, এবং এই ক্ষেত্রে এর প্রাসঙ্গিকতা সম্পর্কে কয়েকটি প্রশ্নের বিষয়ে আমি অনিশ্চিত।

  1. নিক্সের অধীনে নিক্সের চেয়ে আলাদা প্যাকেজ ম্যানেজার এনপিএম ব্যবহার করা কী বোঝায়?
  2. যদি (1) এর উত্তর হ্যাঁ হয়, তবে নিক্সস-এ এনপিএম কীভাবে ইনস্টল করবেন? এর মাধ্যমে অনুসন্ধানের সময় আমি এনপিএম উপলব্ধ দেখতে পাই না nix-env, $ nix-env -qa npmপাশাপাশি কোনও উদ্দীপনাও মেলে না।

webpack-dev-serverনিক্সস-এ ইনস্টল করার সঠিক উপায় কী ?


সম্পাদনা

আমি ইনস্টল করার চেষ্টা webpack-dev-serverনিম্নলিখিত মন্তব্য লিংক এবং ইনস্টল করতে সক্ষম হন node2nix, কিন্তু রিডমি তালিকাভুক্ত ধাপ 2 মাধ্যমে অনুসরণ করতে পারবে না।

আমি এটিকে 2 ধাপে রেফারেন্সযুক্ত ফাইলটি /nix/storeউপস্থিত করেছি

/nix/store/sgk7sxgqxrv2axkxjwc3y15apcqbrv1z-nixos-17.03.1482.1b57bf274a/nixos/pkgs/development/node-packages/node-packages.json

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

দেখে মনে হচ্ছে যে আমার /nix/storeসরাসরি এই ফাইলটি সম্পাদনা করা উচিত নয় এবং পরিবর্তে এটি নিক্সের মাধ্যমে অপ্রত্যক্ষভাবে হেরফের করা উচিত। আমি কি ঠিক করছি যে আমার সরাসরি এই ফাইলটি সম্পাদনা করা উচিত নয়? যদি তা হয় তবে আমি কীভাবে নিক্স বা এর সাথে যুক্ত webpack-dev-serverকরার জন্য আরও 2 টি পদক্ষেপটি সম্পূর্ণ করতে পারি ?



@ এমমানুয়েলরোসা এই লিঙ্কটির জন্য আপনাকে ধন্যবাদ; আমি সেখানে নির্দেশাবলী অনুসরণ করার চেষ্টা করেছি এবং সেই চেষ্টাটির ফলাফল অনুযায়ী এই প্রশ্নটি আপডেট করেছি।
মের্জল

/nix/storeকেবল পঠনযোগ্য। আপনাকে গিট রেপো ক্লোন করতে হবে -I nixpkgs=/path/to/repoএবং nix-*কমান্ডের জন্য ব্যবহার করতে হবে
উইজআপ করুন

উত্তর:


15

নিক্সের মাধ্যমে এনপিএম প্যাকেজ ব্যবহারের একাধিক উপায় রয়েছে:

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

$ nix-shell -p nodejs-8_x
[nix-shell:yourproject]$ npm install # installs npm deps to project-local node_modules
[nix-shell:yourproject]$ npm exec (...) # using scripts configured in package.json

এটি আমার পক্ষে ভাল কাজ করে যেহেতু আমার কোনও প্যাকেজের বাইনারি নির্ভরতা নেই। এই পোস্টটি আপনার প্রকল্পের জন্য একটি ডিফল্ট.নিক্স তৈরির বর্ণনা দেয় যাতে আপনার নিক্স-শেলের প্রতিটি অনুরোধের জন্য নির্ভরতা নির্দিষ্ট করতে হবে না, তবে এটি alচ্ছিক।

আর একটি উপায় এনপিএম 2 এনিক্স ব্যবহার করছে:

node2nix -i node-packages.json # creates ./default.nix
nix-shell # nix-shell will look for a default.nix, which above will have generated

যার ফলে নিক্স প্রকল্পের সমস্ত এনপিএম প্যাকেজ পরিচালনা করতে পারে।

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


আপনি কীভাবে প্যাকেজগুলির সাথে বাইন্ডিং.gyp ব্যবহার করে উদাহরণস্বরূপ এটি প্রসারিত করতে পারেন: github.com/mateogianolio/nblas
CMCDragonkai

1
বাইনারি প্যাকেজগুলির জন্য এটি কীভাবে করব তা আমি খুঁজে পেয়েছি। আপনার nodePackages_6_x.node-gyp, এবং অন্য যে কোনও লাইব্রেরি দরকার blas, তারপরে যখন এটি সমস্ত একসাথে হয়, আপনি npm install ....প্যাকেজগুলি নোড-জিপ ব্যবহার করতে পারেন ।
সিএমসিডিগ্রাগনকাই

1
প্রথম পদ্ধতির বিষয়ে, npm scriptsসমাধানের বিকল্প হিসাবে , আমি nix-shellকার্যকরভাবে বিশ্বব্যাপী এনপিএম প্যাকেজ যুক্ত করতে পারি nix-shell -p nodejs-8_x nodePackages.grunt-cli। (সতর্কতা: নিক্সোস এবং নোড নুব এখানে))
রাইনে এভারেট 18

প্রথম জিনিসটি সম্পর্কে আমি যে জিনিসটি বুঝতে পারি না তা হ'ল কীভাবে প্যাকেজটি নিজেই ইনস্টল করা যায়, অর্থাৎ প্রকল্পের প্যাকেজ.জসনের বাইনারিটি কোথায় binশেষ হয়?
Ryne এভারেট 20

@ ryne-everett যদি আপনি চালনা করেন তবে npm installএক্সিকিউটেবলের সাথে লিঙ্ক করা হবে node_modules/.binএখানে দেখুন ।
লুক অ্যাডামস

8

কিছু কারণে আমি জানি না, নোডপ্যাকেজগুলি রুট নেমস্পেসে নেই এবং এটি ব্যবহার করে খুঁজে পাওয়া যাবে না nix-env -qa

ব্যবহার nix-env -qaPA 'nixos.nodePackages'এখনে প্যাকেজের জন্য লিস্টে।

$ nix-env -qaPA 'nixos.nodePackages' | grep -i web
nixos.nodePackages.webdrvr                     node-webdrvr-2.43.0-1
nixos.nodePackages.webpack                     node-webpack-2.6.1

যদি কোন প্যাকেজ আপনি চান এবং আপনি আপনার নিজের, চেষ্টা এটা NixOS উপর অনুরোধ করতে পারবেন না GitHub


1
আমি মাত্র নিক্স প্যাকেজ ম্যানেজার ব্যবহার করছি এবং এটি দিয়ে কাজ করতে সক্ষম হয়েছি:nix-env -f '<nixpkgs>' -qaPA nodePackages | grep tern
জায়েনেস্ট্রো

এর বেশিরভাগই মূল নামস্থলে নেই কারণ এটি সাধারণ অনুসন্ধানকে ধীর করে দেবে। হাস্কেল প্যাকেজগুলির ক্ষেত্রেও এটি একই রকম। তাদের নাম স্থানটি খুব বড়।
ব্যবহারকারী 239558

3

বিকল্প হিসাবে, আমি নিক্সপেকস ইস্যুতে # 3393 সিএমসিডিগ্রাগনকাইয়ের মন্তব্যও পেয়েছি :

আমি সবেমাত্র জানতে পেরেছি যে আপনি এনপিএমের উপসর্গ ডিরেক্টরিটি পরিবর্তন করতে পারেন। কিছুটা এইরকম:

npm config set prefix '~/mutable_node_modules.

এটি আপনাকে এনপিএমের বিশ্বব্যাপী ইনস্টলেশন ব্যবহার করতে দেয়।

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

তবুও আমি অনুভব করি যে এটি nix-env সাধারণ গ্লোবাল নোড প্যাকেজগুলির জন্য এবং এনএমপি ডেভলপমেন্ট প্যাকেজগুলির মধ্যে ব্যবহারের মধ্যে খুব জটিল। আমি অনুমান করি যে কেন "এনএমপি 2 এনিক্স" এর মতো সমস্ত পোর্টিং স্তর রয়েছে।

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