আমি কি আমার পরীক্ষাগুলি নিখরচায় করা উচিত?


94

আমি ঠিক কি করা উচিত .npmignore?

পরীক্ষা? স্টাফ পছন্দ .travis.yml, .jshintrc? মডিউলটি চালানোর সময় যে কোনও কিছুর প্রয়োজন নেই (রিডমি বাদে)?

আমি এ সম্পর্কে কোনও গাইডেন্স পাই না।


4
কেউ কল করার সময় প্রয়োজনীয় নয় এমন সমস্ত কিছু উপেক্ষা করা উচিত npm install yourlibrary, উদাহরণস্বরূপ .travis.ymlএবং.jshintrc
ল্যান্টে

সত্যি? এমনকি একটি রেডমি? এটি সরকারীভাবে কোথাও সুপারিশ করা হয়?
কলম্ব

4
README .npmignoreবা "files"( docs.npmjs.com/files/package.json#files ) নির্বিশেষে স্বয়ংক্রিয়ভাবে অন্তর্ভুক্ত করা হবে ।
নিকোলের ফ্যান্টোন

উত্তর:


86

যেমনটি আপনি সম্ভবত পেয়েছেন, এনপিএম সেখানে নির্দিষ্টভাবে কী প্রবেশ করা উচিত তা সুনির্দিষ্টভাবে বলে না, বরং তাদের কাছে উপেক্ষা-দ্বারা-ডিফল্ট ফাইলগুলির একটি তালিকা রয়েছে । অনেক লোক এমনকি এটিকে ব্যবহার করে না কারণ আপনার সমস্ত কিছু উপস্থিত না থাকলে ডিফল্ট হিসাবে .gitignoreতা উপেক্ষা করা npmহয় .npmignore। অতিরিক্ত হিসাবে, সেটিংস নির্বিশেষে অনেকগুলি ফাইল ইতিমধ্যে ডিফল্ট দ্বারা উপেক্ষা করা হয় এবং উপরের লিঙ্কে বর্ণিত হিসাবে কিছু ফাইল সর্বদা উপেক্ষা করা থেকে বঞ্চিত থাকে।

সেখানে সর্বদা কী হওয়া উচিত সে সম্পর্কে খুব বেশি আধিকারিক নেই কারণ এটি মূলত একটি উপসেট .gitignore, তবে আমি 5-ইশ বছরের জন্য নোড ব্যবহার করে যা সংগ্রহ করি তা থেকে আমি এখানে এসেছি।

দ্রষ্টব্য: উত্পাদনের দ্বারা আমি যে কোনও সময় বলতে চাইছি যেখানে আপনার মডিউলটি কারও দ্বারা ব্যবহৃত হয় এবং মডিউলে নিজেই বিকাশ না করে।


প্রাক রিলিজ ক্রস সংকলিত উত্স

  • পেশাদাররা : আপনি যদি এমন কোনও ভাষা ব্যবহার করছেন যা জাভাস্ক্রিপ্টে ক্রস-সংকলন করে, আপনি মুক্তির আগে প্রাকপাইল করতে পারেন .coffeeএবং আপনার প্যাকেজে ফাইলগুলি অন্তর্ভুক্ত করতে পারেন না তবে সেগুলি আপনার গিট সংগ্রহস্থলে ট্র্যাক করে রাখতে পারেন।

ফাইলের ওভারওভারগুলি তৈরি করুন

  • পেশাদাররা : এই জাতীয় জিনিসগুলি ব্যবহার করে এমন লোকের মধ্যে node-gypএমন অবজেক্ট ফাইল থাকতে পারে যা কোনও বিল্ডের সময় উত্পন্ন হয় যা কখনই প্যাকেজে যেতে না পারে।
  • কনস : এটি সর্বদা .gitignoreযাইহোক যাইহোক। এনপিএমের দৃষ্টিকোণ থেকে .npmignoreওভাররাইড হওয়ায় আপনি যদি ইতিমধ্যে কোনও ফাইল ব্যবহার করছেন তবে আপনাকে অবশ্যই এই জিনিসগুলি এখানে রাখতে হবে .gitignore

পরীক্ষা

  • পেশাদাররা : আপনার প্রোডাকশন কোডে কম লাগেজ।
  • কনস : আপনি সিস্টেম-নির্দিষ্ট ব্যর্থতা যেমন পাতলা সুযোগে লাইভ পরিবেশে পরীক্ষা চালাতে পারবেন না যেমন নোডের চলমান পুরানো সংস্করণ যা পরীক্ষায় ব্যর্থ হয়।

অবিচ্ছিন্ন ইন্টিগ্রেশন সেটিংস / মেটা ফাইল

  • পেশাদাররা : আবার লাগেজ কম। .travis.ymlকোড ব্যবহার করার জন্য, পরীক্ষার জন্য বা দেখার জন্য প্রয়োজনীয় জিনিসগুলির প্রয়োজন নেই।

অ-পঠিত দস্তাবেজ এবং কোড উদাহরণ

  • পেশাদাররা : কম লাগেজ। কিছু লোক বিদ্যালয়ের বিবেচনায় বিদ্যমান যেখানে আপনি যদি আপনার রেডমে কমপক্ষে ন্যূনতম কার্যকর কার্যকারিতা প্রকাশ করতে না পারেন তবে আপনার মডিউলটি খুব বড়।
  • কনস : লোকেরা তাদের নিজস্ব ফাইল সিস্টেমে সম্পূর্ণ ডকুমেন্টেশন এবং কোড উদাহরণ দেখতে পারে না। তাদের সংগ্রহস্থলটি দেখতে হবে (যার জন্য ইন্টারনেট সংযোগও প্রয়োজন)।

গিথুব-পৃষ্ঠাগুলি অবজেক্ট

  • পেশাদাররা : আপনি অবশ্যই মডিউলটি ভান্ডার হিসাবে ডাবল ডিউটি ​​পরিবেশন করেন যদি আপনার CNAMEফাইলগুলি বা প্লেসহোল্ডারগুলির সাথে অবশ্যই আপনার রিলিজগুলি আবদ্ধ করার প্রয়োজন হয় না ।index.htmlgh-pages

bower.json এবং বন্ধুরা

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

মূলত, আপনার এনপিএম প্যাকেজটি বাইরে রাখার ইচ্ছা থাকলেও আপনার এনপিএম সংগ্রহস্থলের বাইরে না থাকলে আপনার কখনও ব্যবহার করা উচিত। এটি আইটেমের দীর্ঘ তালিকা নয়, বরং এনপিএম লোকেরা তাদের প্যাকেজে অপ্রাসঙ্গিক বস্তুতে আটকে থাকার চেয়ে কার্যকারিতা গড়ে তুলবে।


প্যাকেজ.জসন ফাইল থেকে অ-ব্যবহারযোগ্য স্ক্রিপ্টগুলি সরানোর কোনও উপায় নেই? যেমন স্ক্রিপ্ট পরীক্ষা? আমি সবকিছু মুছে ফেলার জন্য কিছুটা অগোছালো মনে করছি তবে স্ক্রিপ্টগুলি ফাইলটিতে
রাখি

কোন নেই. আপনি সেগুলি প্যাকেজ.জসন থেকে বাদ দিতে পারেন এটি প্রাথমিকভাবে যেভাবেই এনপিএমের জন্য এবং যদি আপনি কেবল পরীক্ষাগুলি চালিয়ে যান তবে তাদের চালানোর জন্য আপনি মূল কমান্ডের মাধ্যমে এগুলি অ্যাক্সেস করতে পারেন।
স্যাম্ট

65

আমি ল্যান্টের সংক্ষিপ্ত এবং সিন্টেটিক উত্তর এবং স্যাম্টের বড় উত্তরের সাথে একমত :

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

এই উত্তরগুলিতে আমার অবদান:

.npmignore হয় কালোতালিকা প্যাকেজ ফাইল নির্বাচন অর্জন উপায়। তবে আরও ব্যবহারিক উপায়ে, আপনি আপনার প্যাকেজ.জসনের ফাইল ক্ষেত্র ব্যবহার করে আপনার প্যাকেজে অন্তর্ভুক্ত করার জন্য প্রয়োজনীয় ফাইলগুলিকে শ্বেত তালিকাতে রাখতে পারেন :

{
  "files": [
    "lib/",
    "index.js"
  ]
}

আমি মনে করি এটি সহজ, ভবিষ্যতের প্রমাণ এবং আরও ভাল শব্দার্থবিজ্ঞান রয়েছে;)


4
... মনে রাখা সহজ এবং দুর্ঘটনাজনিত ব্যবহারের মতো কম বলার জন্য (যদি আপনি আমার মতো ভুলে যেতে পারেন)। টিপটির জন্য ধন্যবাদ, এটি দুর্দান্ত।
কনার

4
আমি এই পদ্ধতির পছন্দ।
ব্র্যাডি হল্ট

4
আমি মনে করি আপনি এমনকি "index.js" বাদ দিতে পারেন এটি ধরে নিয়ে যে এটি আপনার প্যাকেজ.জসনের 'মুখ্য' ফাইলটি :)
বেন জর্জ

চিত্র এবং অপ্রয়োজনীয় নথি উপেক্ষা করা ঠিক আছে। তবে পরীক্ষাগুলি উপেক্ষা করা সম্ভবত একটি ভাল ধারণা নয়। কিছু অতিরিক্ত কেবি ডাউনলোড করতে খুব বেশি সময় লাগে না এবং npm testসমস্ত নোড_মডিউলগুলিতে একটি পুনরাবৃত্তি করলে কোনও নির্দিষ্ট পরিবেশে যদি কিছু আলাদা হয়ে থাকে তবে আপনাকে ইঙ্গিত দিতে পারে।
adelriosantiago

4
@ NicolásFantone দ্য ফাইল সম্পত্তি গ্রহণ উল্লিখিত glob পাশাপাশি প্যাটার্ন। সুতরাং আমরা পরীক্ষার ফাইলগুলি তৈরি না করেই উপেক্ষা করতে পারি .npmignorefiles: ["lib", "!lib/**/*.test.js"]। :)
সুরেশরাজ

15

কেবল স্পষ্ট করার জন্য, যে কোনও সময় npm install your-library, এনপিএম আপনার অন্তর্ভুক্ত ফাইলগুলি বাদে রেপোতে অন্তর্ভুক্ত সমস্ত উত্স ফাইলগুলি ডাউনলোড করবে .npmignore

জেনে রাখুন যে আপনার গ্রন্থাগারটি ইনস্টল করছেন তাদের কেবল আপনার গ্রন্থাগার চলমান হবে, অন্য যে কোনও কিছুই প্রয়োজন হবে না।

উদাহরণস্বরূপ, যখন কোনও গ্রন্থাগার ইনস্টল করেন তখন সম্ভবত এটি আপনার .travis.ymlবা আপনার .jshintrcফাইলগুলি, এমনকি কিছু চিত্র, গ্রান্ট ফাইল, ডকুমেন্টেশন ইত্যাদির যত্ন নেয় না that

.npmignore আপনার এনপিএম প্যাকেজটি কম ফাইল থাকতে দেয় এবং দ্রুত ডাউনলোড হতে পারে


4
এখানে অনুভূতিটি ভাল তবে স্পষ্ট .npmignoreকরে বলার জন্য: ডাউনলোড করা বিষয়গুলিতে সরাসরি প্রভাব ফেলবে না , আপনি যখন এনএমপি প্রকাশ ও আপলোড করবেন তখন আপনার প্যাকেজে কী পড়বে তা প্রভাবিত করে । এটি পরোক্ষভাবে ডাউনলোড করার জন্য আরও ছোট ফাইল তৈরি করে।
মার্ক স্টোসবার্গ

3

আপনার পরীক্ষা অন্তর্ভুক্ত করবেন না। প্রায়শই পরীক্ষাগুলি আসল কোডবেজের আকারের 5x এর মতো হয়। যতক্ষণ না আপনার পরীক্ষাগুলি গিথুব ইত্যাদিতে থাকে ততক্ষণ যথেষ্ট।

তবে আপনাকে যা করা উচিত তা হ'ল আপনার এনপিএম প্যাকেজটির প্রকাশিত ফর্ম্যাটে পরীক্ষা করা । কিছু ধূমপান পরীক্ষা তৈরি করুন যা প্রকৃত কোডবেসে থাকে তবে পরীক্ষার স্যুটটির অংশ নয়।

আপনি এখানে আপনার প্যাকেজটি টার্বল্লিং করার পরে পরীক্ষার বিষয়ে পড়তে পারেন: https://github.com/ORESoftware/r2g

কীভাবে কোনও এনপিএম-এ প্রকাশ না করে `npm প্রকাশের ফলাফলটি পরীক্ষা করতে হয়?

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