নোড.জেএস প্রকল্পগুলির জন্য প্যাকেজ.জসন ফাইলটি স্বয়ংক্রিয়ভাবে তৈরি করার কোনও উপায় আছে?


412

প্যাকেজ.জসন কি ম্যানুয়ালি সম্পাদনা করার কথা? এনপিএম-এর মতো কোনও প্রোগ্রাম কি কেবল ফাইলগুলি সন্ধান করতে পারে না, "প্রয়োজনীয়" বিবৃতিগুলি দেখুন এবং তারপরে প্যাকেজ.জসন ফাইলটিতে প্রয়োজনীয় এন্ট্রিগুলি রাখার জন্য এটি ব্যবহার করুন? এর মতো কোন প্রোগ্রাম আছে?


2
এখন অবধি, আমি হাতে হাতে ফাইল সম্পাদনা করেছি: আমার প্রয়োজন প্রতিটি প্যাকেজ (এবং সর্বনিম্ন সংস্করণ) যুক্ত করছি। তারপরে চালানnpm link
পিকেইক

22
@ নিউরোমান্সার আপনি কি দয়া করে সঠিক উত্তরটি গ্রহণ করতে পারবেন ? এটি স্পষ্টতই 38+ ভোট সহ একটি ...
Esteban

2
npmjs.org/doc/install.html , এটি নতুন প্যাকেজ ইনস্টল করার সময় প্যাকেজ.জসনকে স্বয়ংক্রিয়ভাবে আপডেট করতেও ব্যবহার করা যেতে পারে
V31

1
@ অ্যানোমেন্সার, আপনার গিবসন বই লিখুন এবং এটি ঠিক করুন! :)
প্রসংশাথ

1
npmjs.com/package/npm-collect ঠিক এই এবং আরও কিছু করে
কোডারফসালভেশন

উত্তর:


601

প্যাকেজ.জসন ফাইলটি আপনার নোড.জেএস প্রকল্প সম্পর্কে জানতে এনপিএম দ্বারা ব্যবহৃত হয় ।

আপনার npm initজন্য প্যাকেজ.জসন ফাইলগুলি তৈরি করতে ব্যবহার করুন !

এটি এনপিএম সহ বান্ডিল আসে। এখানে এর ডকুমেন্টেশন পড়ুন: https://docs.npmjs.com/cli/init

এছাড়াও, একটি অফিসিয়াল সরঞ্জাম রয়েছে যা আপনি প্রোগ্রামটিমে এই ফাইলটি তৈরি করতে ব্যবহার করতে পারেন: https://github.com/npm/init-package-json


9
ধন্যবাদ npm initঠিক আমি যা খুঁজছিলাম! এছাড়াও এর পরে আমি সাধারণত npm shrinkwrapএকটি npm-shrinkwrap.jsonফাইল তৈরি করতে দৌড়ে যাই
জসদীপ খালসা

75
প্রতি npm init: npm install <pkg> --saveপরে একটি প্যাকেজ ইনস্টল করতে ব্যবহার করুন এবং এটি প্যাকেজ.জসন ফাইলে নির্ভরতা হিসাবে সংরক্ষণ করুন।
ব্র্যাড কোচ

5
npm initভিজ্যুয়াল স্টুডিও 2015 থেকে প্যাকেজ ম্যানেজার কনসোলে চালানোর পরে , এটি [...] Press ^C at any time to quit.কিছু না জিজ্ঞাসা করা বা জসন ফাইল তৈরি না করে কেবল প্রদর্শন করে এবং থামে। আমি কিছু অনুপস্থিত করছি?
মাইকেল হিলাস

2
npmjs.com/package/npm-collect আপনাকে ইতিমধ্যে ইনস্টল করা কোনও মডিউল সংগ্রহ করতে দেয়
কোডারোফ্যালভেশন

3
npm init --force --yesএই ফাইলটি উত্পন্ন করার জন্য একটাই লাইনার
বার্নহার্ড ডাবলারের

204

প্রথম বন্ধ, চালান

npm init

... আপনার প্রকল্প / প্যাকেজ সম্পর্কে আপনাকে কয়েকটি প্রশ্ন জিজ্ঞাসা করবে ( প্রথমে এটি পড়ুন ) এবং তারপরে আপনার জন্য একটি প্যাকেজ.জসন ফাইল উত্পন্ন করবে।

তারপরে, আপনার কাছে একবার প্যাকেজ.জসন ফাইলটি ব্যবহার করুন

npm install <pkg> --save

অথবা

npm install <pkg> --save-dev

... একটি নির্ভরতা ইনস্টল করতে এবং স্বয়ংক্রিয়ভাবে আপনার কাছে সংযোজন package.json'র dependenciesতালিকা।

(দ্রষ্টব্য: আপনার নির্ভরতার জন্য আপনাকে সংস্করণ ব্যাপ্তিটি ম্যানুয়ালি মুছে ফেলার দরকার হতে পারে))


6
মনে হচ্ছে এটি এখন প্যাকেজ.জসন তৈরি করে না। win7x64 node0.10.9
atian25

33
আমার উত্তরটির সম্পূর্ণতা আমি সত্যিকার অর্থে প্রশংসা করি না, একটি লাইনের জন্য সংরক্ষণ করে, পুনরায় লিখে এবং এখনও আমার কাছে দায়ী। পুরানো কিনা তা নির্বিশেষে।
nzondlo

এনপিএম init সম্পর্কে নির্দিষ্ট ডকুমেন্টেশনটি এখানে রয়েছে
shmim

1
এটি অবশ্যই সঠিক উত্তর হবে। আপনার সবসময় ম্যানুয়ালি স্পর্শ করার প্রয়োজন হয় না package.json, এটি সাধারণত স্বয়ংক্রিয়ভাবে হ্যান্ডেল হয়।
সালার

1
--saveনতুন এনপিএম সংস্করণগুলিতে আর প্রয়োজন নেই
ডেভিড কল্যানান

180

আমি। / নোড_মডিউলগুলিতে নির্ভরতা সংগ্রহ করার জন্য একটি সহজ স্ক্রিপ্ট লিখেছিলাম। এটি এই মুহুর্তে আমার প্রয়োজনীয়তা পূরণ করে। এটি অন্য কিছুকে সাহায্য করতে পারে, আমি এটি এখানে পোস্ট করি।

var fs = require("fs");

function main() {
  fs.readdir("./node_modules", function (err, dirs) {
    if (err) {
      console.log(err);
      return;
    }
    dirs.forEach(function(dir){
      if (dir.indexOf(".") !== 0) {
        var packageJsonFile = "./node_modules/" + dir + "/package.json";
        if (fs.existsSync(packageJsonFile)) {
          fs.readFile(packageJsonFile, function (err, data) {
            if (err) {
              console.log(err);
            }
            else {
              var json = JSON.parse(data);
              console.log('"'+json.name+'": "' + json.version + '",');
            }
          });
        }
      }
    });

  });
}

main();

আমার ক্ষেত্রে উপরের স্ক্রিপ্টটি আউটপুট দেয়:

"colors": "0.6.0-1",
"commander": "1.0.5",
"htmlparser": "1.7.6",
"optimist": "0.3.5",
"progress": "0.1.0",
"request": "2.11.4",
"soupselect": "0.2.0",   // Remember: remove the comma character in the last line.

এখন, আপনি সেগুলি অনুলিপি এবং পেস্ট করতে পারেন। আনন্দ কর!


39
আপনার এটি এনপিএম মডিউল হিসাবে প্রকাশ করা উচিত
বেন

আপনি 770 লাইন ফিরে পেলে আপনি কি করবেন ..? আমার কেবল প্যাকেজ.জসনে 58 টি রয়েছে ডিডিপেন্ডেন্সগুলি সহ: - /
শেরজোদ

3
নোট করুন যে অন্তর্নির্মিত npm ls --depth=0কমবেশি একই প্রিন্ট করবে (যদিও এটি 2012 এর আগে হয়েছিল কিনা তা নিশ্চিত নয়)
jakub.g

3
এটি হ্যান্ডেল করার সঠিক উপায় নয়। এটি প্রতিটি মডিউলে প্রতিটি নির্ভরতা আউটপুট করবে। সুতরাং আপনার প্যাকেজ প্যাকেজ যদি প্রয়োজন a, এবং প্যাকেজ aপ্যাকেজ প্রয়োজন bএবং c, এই স্ক্রিপ্টের ইচ্ছা আউটপুট সব স্তরের, তাই a, b, cযা না সঠিক। এটি কেবল আউটপুট করা উচিত a, সাব-প্যাকেজগুলি স্বয়ংক্রিয়ভাবে সমাধান হবে।
সালার

এটি কি আমি, বা মনে হয় বেশিরভাগ উত্তরগুলি ধরেই নিচ্ছে যে আপনি কোনও বিদ্যমান সিস্টেম থেকে শুরু করছেন না যেখানে নোড_মডিউলগুলি অনুলিপি দ্বারা তৈরি হয়েছিল বা হাতে নির্মিত হয়েছিল? এমন সময় আছে যখন আমাকে একটি প্রজেক্ট ফোল্ডার হস্তান্তর করা হয়, এতে ব্যক্তিগত মডিউল থাকে এবং আমার কাছে সংগ্রহস্থলটিতে অ্যাক্সেস থাকে না। আমি আমার সংগ্রহস্থলগুলিতে মডিউলগুলি রাখার পরেও আমি প্রকল্পটি পুনরুদ্ধার করতে স্বয়ংক্রিয় করতে চাই। অথবা সম্ভবত আমাকে 'কেবল এই নোড_মডিউলগুলি ফোল্ডারটি অনুলিপি করতে' বলা হয়েছে। হ্যাঁ, হ্যাঁ, সেরা অনুশীলনগুলি, তবে আমি ডেভসের বাস্তবতার সাথে কাজ করি যারা সম্ভবত তারা কী করছে তা জানেন না। এটি আমাকে এ জাতীয় প্রকল্পটি সোজা করতে সহায়তা করে। ভাগ করে নেওয়ার জন্য ধন্যবাদ!
noelhx

82

npm init

প্যাকেজ.জসন ফাইল তৈরি করতে এবং তারপরে আপনি ব্যবহার করতে পারেন

ls node_modules/ | xargs npm install --save

নোড_মডিউল ফোল্ডারে আপনার মডিউলগুলি পূরণ করতে।

সম্পাদনা করুন: @ প্যালপাইপাইন্ডটি নির্দেশ করেছেন যে দ্বিতীয় কমান্ডটি রিডানড্যান্ট কারণ npm initএখন আপনার নোড_মডিউল / ফোল্ডারে যা আছে তা স্বয়ংক্রিয়ভাবে যুক্ত হয়। আমি জানি না যে এটি সর্বদা ঘটনাটি ছিল কিনা তবে এখন কমপক্ষে এটি দ্বিতীয় আদেশ ছাড়া কাজ করে।


5
আপনি ইনস্টল করা প্রতিটি মডিউলটির জন্য - সেভ ব্যবহার না করে থাকলে এটি অত্যন্ত সহায়ক।

7
আমি দেখতে পেলাম যে npm initইনস্টল হওয়া প্যাকেজগুলির উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে নির্ভরতা যুক্ত হয়েছে এবং দ্বিতীয় কমান্ড চালানোর দরকার নেই।
পলদীপাইন্ড

আমি খুব আনন্দিত যে আপনি এইভাবে নোড_মডিউল ফোল্ডারের নামগুলির উপর নির্ভর করতে পারেন ... ভাই!
ডিটি রাশ

এটি ব্যবহার করার সময়ও দুর্দান্তভাবে কার্যকর npm dedupe, যা আপনার মডিউলগুলির মধ্যে ভাগ করে নেওয়া নির্ভরতাগুলি সেই মডিউলগুলির বাইরে ফেলে এবং সেগুলি আপনার node_modulesডিরেক্টরিতে শীর্ষ স্তরে সঞ্চয় করে । তবে তা স্পর্শ করে না package.json! এটির সাহায্যে আপনি প্রতিলিপি তৈরি করতে এবং সেটাকে ভাগ করে নিতে পারেন।
প্যাথোজেন

1
যে কেউ প্যাকেজ.জসন যুক্ত করার পরে দুর্দান্ত উত্তর।
ক্যারি কেন্ডাল

24

কমান্ড লাইন :

npm init

package.json ফাইল তৈরি করবে

প্যাকেজ.জসন ফাইলে নির্ভরতার অধীনে প্যাকেজগুলি ইনস্টল, আপডেট এবং আনইনস্টল করতে:

কমান্ড লাইন :

npm install <pkg>@* --save 

প্যাকেজ.জসন ফাইলে নির্ভরতার অধীনে প্যাকেজের জন্য সর্বশেষতম সংস্করণটি স্বয়ংক্রিয়ভাবে যুক্ত হবে

গো EX:

npm install node-markdown@* --save

কমান্ড লাইন :

npm install <pkg> --save

এছাড়াও স্বয়ংক্রিয়ভাবে প্যাকেজ.জসন ফাইলে নির্ভরতার অধীনে প্যাকেজের জন্য সর্বশেষতম সংস্করণ যুক্ত হবে

আপনার যদি কোনও প্যাকেজের জন্য নির্দিষ্ট সংস্করণ প্রয়োজন হয় তবে এই কমান্ড লাইনটি ব্যবহার করুন :

npm install <pkg>@<version> --save

প্যাকেজ.জসন ফাইলে নির্ভরতার অধীনে প্যাকেজের নির্দিষ্ট সংস্করণটি স্বয়ংক্রিয়ভাবে যুক্ত হবে

গো EX:

npm install koa-views@1.0.0 --save

আপনার যদি কোনও প্যাকেজের জন্য নির্দিষ্ট সংস্করণের প্রয়োজন হয় তবে এই কমান্ড লাইনটি ব্যবহার করুন :

npm install <pkg>@<version range>

প্যাকেজ.জসন ফাইলে নির্ভরতার অধীনে সংস্করণের পরিসরের মধ্যে প্যাকেজটির জন্য স্বয়ংক্রিয়ভাবে সর্বশেষতম সংস্করণ যুক্ত হবে

গো EX:

npm install koa-views@">1.0.0 <1.2.0" --save

জন্য কিভাবে প্যাকেজের জন্য সংস্করণ লিখতে সম্পর্কে আরো বিস্তারিত npm ডক

কমান্ড লাইন :

npm update --save

প্যাকেজগুলি প্যাকেজ.জসন ফাইলে আপডেট করবে এবং স্বয়ংক্রিয়ভাবে প্যাকেজ.জসন ফাইলে নির্ভরতার অধীনে থাকা সমস্ত প্যাকেজের আপডেট সংস্করণ যুক্ত হবে

কমান্ড লাইন :

npm uninstall <pkg> --save

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


14

চলমান npm init -yআপনার তোলে package.jsonসব অক্ষমতা সঙ্গে।
তারপরে আপনি package.jsonসেই অনুযায়ী পরিবর্তন করতে পারেন এটি প্রতিটি কমান্ডের উপর
চাপ enterদিয়ে বাধা দিয়ে সময় সাশ্রয় করেnpm init


6

আপনি এখন 3 সহজ পদক্ষেপ ব্যবহার করে নোড টার্মিনালে ইয়েমেন - আধুনিক ওয়েব অ্যাপ স্ক্যাফোল্ডিং সরঞ্জামটি ব্যবহার করতে পারেন ।

প্রথমত, আপনাকে ইয়ো এবং অন্যান্য প্রয়োজনীয় সরঞ্জামগুলি ইনস্টল করতে হবে:

$ npm install -g yo bower grunt-cli gulp

একটি ওয়েব অ্যাপ্লিকেশন স্ক্যাফোড করতে জেনারেটর- ওয়েব অ্যাপ্লিকেশন জেনারেটরটি ইনস্টল করুন :

$ npm install -g generator-webapp  // create scaffolding 

ইয়ো চালান এবং ... আপনি সব সম্পন্ন করেছেন:

$ yo webapp  // create scaffolding 

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

ইয়েমেন (ইও) - স্ক্যাফোল্ডিং সরঞ্জাম যা ফ্রেমওয়ার্ক-নির্দিষ্ট স্ক্যাফোল্ডগুলির একটি বাস্তুতন্ত্র প্রস্তাব করে, যার নাম জেনারেটর, যা আগে উল্লিখিত কিছু ক্লান্তিকর কাজ সম্পাদন করতে ব্যবহৃত হতে পারে।

গ্রান্ট / গাল্প - আপনার প্রকল্পটি নির্মাণ, পূর্বরূপ এবং পরীক্ষা করতে ব্যবহৃত হয়।

বোর - নির্ভরতা পরিচালনার জন্য ব্যবহৃত হয়, যাতে আপনাকে আর আর সাময়িকভাবে আপনার ফ্রন্ট-এন্ড লাইব্রেরি ডাউনলোড করতে হয় না।


5

পাইলিনাক্সের উত্তরের ভিত্তিতে, উইন্ডোজ ওএসের জন্য নীচে একটি সমাধান দেওয়া হয়েছে,

dir node_modules > abc.txt
FOR /F %k in (abc.txt) DO npm install --save

আশা করি এটা সাহায্য করবে.


হয়, আপনি কেবল abc.txt এর উপরে এবং নীচে এনপিএম ইনস্টল টাইপ করতে পারেন - মুছে ফেলা নতুন লিঙ্কটিও কাজ করবে।
রনি

মনে রাখবেন, সহায়ক হওয়ার সময় এটি এনপিএম প্যাকেজগুলির ভুল সংস্করণ ইনস্টল করতে পারে, যা অ্যাপ্লিকেশনটিকে ব্যর্থ হতে পারে।
জারমড

1

প্যাকেজ.জসোন ফাইল উত্পন্ন করতে এনপিএম init -f কমান্ডটি ব্যবহার করুন এবং তার পরে প্রতিটি কমান্ডের পরে - সেভ করুন যাতে প্রতিটি মডিউল স্বয়ংক্রিয়ভাবে আপনার প্যাকেজটির ভিতরে আপডেট হয়ে যায়।জসনের জন্য উদাহরণ: এনপিএম ইনস্টল এক্সপ্রেস - সেভ করুন


0

1. পছন্দ

আপনি যদি গিট এবং গিটহাব ব্যবহারকারী:

    generate-packageআরও সহজ, চেয়ে npm init

আর

এবং / অথবা আপনি package.jsonটেমপ্লেট পছন্দ করেন না , যা প্যাকেজ npm initউত্পন্ন বা উত্পন্ন করে:

    আপনি অ্যাপ্লিকেশান ভারা এর মাধ্যমে আপনার নিজের টেমপ্লেট তৈরি করতে পারেন উৎপন্ন , পালের বা ইঔম্যান্


2. প্রাসঙ্গিকতা

এই উত্তরটি মার্চ 2018 এর জন্য প্রাসঙ্গিক the ভবিষ্যতে, এই উত্তর থেকে ডেটা অপ্রচলিত হতে পারে।

এই উত্তরের লেখক ব্যক্তিগতভাবে জেনারেট-প্যাকেজ 2018 এ ব্যবহার করেছেন।


3. সীমাবদ্ধতা

জেনারেট-প্যাকেজটি ব্যবহার করার জন্য আপনার গিট এবং গিটহাব ব্যবহার দরকার।


৪. বিক্ষোভ

উদাহরণস্বরূপ, আমি ফাঁকা ফোল্ডার তৈরি করি sasha-npm-init-vs-generate-package

4.1। জেনারেট-প্যাকেজ

COMMAND:

D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package>gen package
[16:58:52] starting generate
[16:59:01]  running tasks: [ 'package' ]
[16:59:04] starting package
? Project description? generate-package demo
? Author's name? Sasha Chernykh
? Author's URL? https://vk.com/hair_in_the_wind
[17:00:19] finished package  1m

package.json:

{
  "name": "sasha-npm-init-vs-generate-package",
  "description": "generate-package demo",
  "version": "0.1.0",
  "homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package",
  "author": "Sasha Chernykh (https://vk.com/hair_in_the_wind)",
  "repository": "Kristinita/sasha-npm-init-vs-generate-package",
  "bugs": {
    "url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues"
  },
  "license": "MIT",
  "engines": {
    "node": ">=4"
  },
  "scripts": {
    "test": "mocha"
  },
  "keywords": [
    "generate",
    "init",
    "npm",
    "package",
    "sasha",
    "vs"
  ]
}

4.2। এনপিএম ইনিশ

D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package>npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (sasha-npm-init-vs-generate-package)
version: (1.0.0) 0.1.0
description: npm init demo
entry point: (index.js)
test command: mocha
git repository: https://github.com/Kristinita/sasha-npm-init-vs-generate-package
keywords: generate, package, npm, package, sasha, vs
author: Sasha Chernykh
license: (ISC) MIT
About to write to D:\SashaDemoRepositories\sasha-npm-init-vs-generate-package\package.json:

{
  "name": "sasha-npm-init-vs-generate-package",
  "version": "0.1.0",
  "description": "npm init demo",
  "main": "index.js",
  "scripts": {
    "test": "mocha"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/Kristinita/sasha-npm-init-vs-generate-package.git"
  },
  "keywords": [
    "generate",
    "package",
    "npm",
    "package",
    "sasha",
    "vs"
  ],
  "author": "Sasha Chernykh",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues"
  },
  "homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package#readme"
}


Is this ok? (yes) y
{
  "name": "sasha-npm-init-vs-generate-package",
  "version": "0.1.0",
  "description": "npm init demo",
  "main": "index.js",
  "scripts": {
    "test": "mocha"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/Kristinita/sasha-npm-init-vs-generate-package.git"
  },
  "keywords": [
    "generate",
    "package",
    "npm",
    "package",
    "sasha",
    "vs"
  ],
  "author": "Sasha Chernykh",
  "license": "MIT",
  "bugs": {
    "url": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package/issues"
  },
  "homepage": "https://github.com/Kristinita/sasha-npm-init-vs-generate-package#readme"
}

আমি মনে করি, এটি generate-packageআরও সহজভাবে, এটি npm init


5. কাস্টমাইজিং

এটি আপনার নিজস্ব package.jsonটেমপ্লেট তৈরি করে , উত্পন্ন এবং ইয়োমন উদাহরণগুলি দেখুন।

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