वहाँ Node.js परियोजनाओं के लिए package.json फ़ाइल को स्वचालित रूप से बनाने का एक तरीका है


412

Package.json को मैन्युअल रूप से संपादित किया जाना चाहिए? Npm जैसे कोई प्रोग्राम सिर्फ फाइलों के माध्यम से नहीं देख सकता है, "आवश्यकताएं" बयानों को देख सकता है, और फिर पैकेज में आवश्यक प्रविष्टियों को डालने के लिए उपयोग कर सकता है। फ़ाइल को देखिए? क्या इस तरह के कोई कार्यक्रम हैं?


2
अब तक, मैंने फ़ाइल को हाथ से संपादित किया: हर पैकेज (और मिनट संस्करण) को जोड़कर मुझे ज़रूरत है। फिर चलाएंnpm link
pkyeck

22
@neuromancer क्या आप सही उत्तर स्वीकार कर सकते हैं ? यह स्पष्ट रूप से 38+ मतों के साथ एक है ...
एस्टेबन

2
npmjs.org/doc/install.html , इसका उपयोग पैकेज को स्वचालित रूप से अपडेट करने के लिए भी किया जा सकता है। नया पैकेज स्थापित करते समय Json
V31

1
@neromancer, अपनी गिब्सन किताबें नीचे रखें और इसे ठीक करें! :)
प्रशान्त

1
npmjs.com/package/npm-collect ठीक यही करता है और अधिक
कोडरफॉस्लेशन

जवाबों:


601

Package.json फ़ाइल द्वारा प्रयोग किया जाता है NPM अपने Node.js परियोजना के बारे में जानने के लिए।

npm initआप के लिए package.json फ़ाइलों को उत्पन्न करने के लिए उपयोग करें !

यह npm के साथ बंडल में आता है। इसके प्रलेखन को यहाँ पढ़ें: https://docs.npmjs.com/cli/init

इसके अलावा, एक आधिकारिक उपकरण है जिसे आप इस फ़ाइल को प्रोग्रामेटिक रूप से जेनरेट करने के लिए उपयोग कर सकते हैं: https://github.com/npm/init-pack-nson


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

... आपसे आपके प्रोजेक्ट / पैकेज के बारे में कुछ सवाल ( पहले यह पढ़ें ) और फिर आपके लिए एक पैकेज। json फ़ाइल जनरेट करेगा।

फिर, जब आपके पास एक पैकेज .json फ़ाइल हो, का उपयोग करें

npm install <pkg> --save

या

npm install <pkg> --save-dev

... निर्भरता स्थापित करने के लिए और स्वचालित रूप से अपने से संलग्न package.jsonकी dependenciesसूची।

(नोट: आपको अपनी निर्भरता के लिए संस्करण रेंज को मैन्युअल रूप से ट्विक करने की आवश्यकता हो सकती है।)


6
ऐसा लगता है कि यह अभी package.json नहीं बना है। win7x64 नोड0.10.9
atian25

33
मैं वास्तव में मेरे जवाब की संपूर्णता की सराहना नहीं करता, एक पंक्ति के लिए बचा, फिर से लिखा गया और अभी भी मुझे जिम्मेदार ठहराया। भले ही यह पुराना था या नहीं।
nzondlo

Npm

1
यह सही उत्तर होना चाहिए। आपको हमेशा मैन्युअल रूप से स्पर्श करने की आवश्यकता नहीं है package.json, यह आमतौर पर स्वचालित रूप से नियंत्रित किया जाता है।
सलार

1
--saveअब नए npm संस्करणों में आवश्यक नहीं है
David Callanan

180

मैंने सिर्फ ./node_modules पर निर्भरता एकत्र करने के लिए एक सरल स्क्रिप्ट लिखी थी। यह इस समय मेरी आवश्यकता को पूरा करता है। यह कुछ अन्य लोगों की मदद कर सकता है, मैं इसे यहां पोस्ट करता हूं।

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
आपको इसे npm मॉड्यूल के रूप में प्रकाशित करना चाहिए
बेन

अब आप क्या करते हैं जब आप 770 लाइनों को वापस लाते हैं ..? मैं केवल सहित package.json devDependencies में 58 है: - /
Sherzod

3
ध्यान दें कि बिल्ट-इन npm ls --depth=0कम या ज्यादा एक ही प्रिंट करेगा (निश्चित नहीं कि अगर 2012 में ऐसा हुआ था)
jakub.g

3
इसे संभालने का यह सही तरीका नहीं है। यह हर मॉड्यूल में निर्भरता का उत्पादन करेगा। तो अपने पैकेज पैकेज की जरूरत है a, और पैकेज aपैकेज की जरूरत है bऔर c, इस स्क्रिप्ट इच्छा उत्पादन के लिए सभी स्तरों, इसलिए a, b, cजो है नहीं सही। यह केवल आउटपुट होना चाहिए a, उप-पैकेज स्वचालित रूप से हल हो जाएंगे।
सल्लार

क्या यह मुझे है, या ऐसा लगता है कि अधिकांश उत्तर यह मान रहे हैं कि आप एक मौजूदा सिस्टम से शुरू नहीं कर रहे हैं जहाँ नोड_मॉड्यूल्स की प्रतिलिपि बनाई गई थी या हाथ से बनाई गई थी? ऐसे समय होते हैं जब मुझे एक प्रोजेक्ट फ़ोल्डर सौंपा जाता है, जिसमें निजी मॉड्यूल होते हैं और मेरे पास रिपॉजिटरी तक पहुंच नहीं होती है। एक बार जब मैं MY रिपॉजिटरी में मॉड्यूल डाल देता हूं, तब भी मैं प्रोजेक्ट को फिर से बनाना चाहता हूं। या शायद मुझे कहा गया है कि 'बस इस नोड_मॉडल फ़ोल्डर की प्रतिलिपि बनाएँ'। हां, हां, सर्वोत्तम अभ्यास, लेकिन मैं उन देवताओं की वास्तविकता से निपटता हूं जो शायद नहीं जानते कि वे क्या कर रहे हैं। यह मुझे इस तरह की परियोजना को सीधा करने में मदद करता है। साझा करने के लिए धन्यवाद!
noelhx

82

npm init

package.json फ़ाइल बनाने के लिए और फिर आप का उपयोग करें

ls node_modules/ | xargs npm install --save

नोड_मॉड्यूल फ़ोल्डर में आपके पास मॉड्यूल को भरने के लिए।

संपादित करें: @paldepind ने बताया कि दूसरा आदेश निरर्थक है क्योंकि npm initअब स्वचालित रूप से आपके नोड_मॉडल के फ़ोल्डर में आपके पास जो कुछ है, उसे जोड़ देता है। मुझे नहीं पता कि क्या यह हमेशा मामला रहा है, लेकिन अब कम से कम, यह दूसरी कमांड के बिना काम करता है।


5
यदि आप स्थापित किए गए प्रत्येक मॉड्यूल के लिए -save का उपयोग नहीं कर रहे थे तो यह बेहद मददगार है।

7
मैंने पाया कि npm initस्वचालित रूप से स्थापित पैकेजों के आधार पर निर्भरता को जोड़ा था और दूसरी कमांड चलाने की कोई आवश्यकता नहीं थी।
पलडपिंड

मुझे बहुत खुशी है कि आप इस तरीके से नोड_मॉडल फ़ोल्डर के नामों पर निर्भर हो सकते हैं ... पाब्लो!
डीटी रश

उपयोग करते समय यह काल्पनिक रूप से उपयोगी भी है npm dedupe, जो उन मॉड्यूलों में से आपके मॉड्यूल के बीच साझा की गई निर्भरता को खींचता है और आपकी node_modulesनिर्देशिका के शीर्ष स्तर पर उन्हें संग्रहीत करता है । लेकिन यह स्पर्श नहीं करता है package.json! इसके साथ, आप अपने कटे हुए सेटअप को प्रतिबद्ध और साझा कर सकते हैं।
पाथोजन

1
तथ्य के बाद package.json जोड़ने वाले किसी के लिए भी महान जवाब।
कैरी केंडल

24

कमांड लाइन :

npm init

package.json फ़ाइल बनाएगा

पैकेज पर निर्भरता के तहत संकुल को अद्यतन और अनइंस्टॉल करने के लिए। पैकेज फ़ाइल में:

कमांड लाइन :

npm install <pkg>@* --save 

पैकेज में निर्भरता के तहत पैकेज के लिए स्वचालित रूप से नवीनतम संस्करण जोड़ देगा। json फ़ाइल

पूर्व:

npm install node-markdown@* --save

कमांड लाइन :

npm install <pkg> --save

यह भी स्वचालित रूप से पैकेज में निर्भरता के तहत पैकेज के लिए नवीनतम संस्करण को जोड़ देगा। json फ़ाइल

यदि आपको पैकेज के लिए विशिष्ट संस्करण की आवश्यकता है तो इस कमांड लाइन का उपयोग करें :

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

स्वचालित रूप से पैकेज में निर्भरता के तहत पैकेज के विशिष्ट संस्करण को जोड़ देगा। json फ़ाइल

पूर्व:

npm install koa-views@1.0.0 --save

यदि आपको किसी पैकेज के लिए इस कमांड लाइन का उपयोग करने के लिए विशिष्ट रेंज की आवश्यकता है :

npm install <pkg>@<version range>

स्वचालित रूप से पैकेज में निर्भरता के अंतर्गत संस्करण की श्रेणी के बीच पैकेज के लिए नवीनतम संस्करण को जोड़ देगा

पूर्व:

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

आशा है ये मदद करेगा।


या तो, आप बस abpm.txt के शीर्ष पर npm इंस्टॉल टाइप कर सकते हैं और निचले हिस्से में - साथ ही नया लिंक हटा दें, यह भी काम करेगा।
रोनी

ध्यान दें कि, सहायक होते हुए, यह NPM संकुल के गलत संस्करणों को स्थापित कर सकता है, जिससे एप्लिकेशन विफल हो सकता है।
जरमोद

1

package.json फ़ाइल जनरेट करने के लिए कमांड npm init -f का उपयोग करें और उसके बाद प्रत्येक कमांड के बाद उपयोग करें -save ताकि प्रत्येक मॉड्यूल स्वचालित रूप से आपके पैकेज के अंदर अपडेट हो जाए। json for ex: npm install express --save


0

1. विकल्प

यदि आप उपयोगकर्ता और गिटहब उपयोगकर्ता:

    generate-packageऔर अधिक, की तुलना में npm init

अन्य

और / या आपको package.jsonटेम्पलेट पसंद नहीं है , जो जेनरेट-पैकेज या npm initजेनरेट करता है:

    आप अपने स्वयं के टेम्प्लेट को उत्पन्न , पाल या योमन के रूप में मचान ऐप के माध्यम से उत्पन्न कर सकते हैं ।


2. प्रासंगिकता

यह उत्तर मार्च 2018 के लिए प्रासंगिक है। भविष्य में, इस उत्तर के डेटा अप्रचलित हो सकते हैं।

इस उत्तर के लेखक ने मार्च 2018 में व्यक्तिगत रूप से जेनरेट-पैकेज का उपयोग किया था।


3. सीमाएं

आपको जनरेट-पैकेज का उपयोग करने के लिए git और GitHub का उपयोग करने की आवश्यकता है।


4. प्रदर्शन

उदाहरण के लिए, मैं रिक्त फ़ोल्डर बनाता हूं sasha-npm-init-vs-generate-package

4.1। उत्पन्न पैकेज

कमान:

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। एनपीएम init

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टेम्प्लेट बनाएं , जेनरेट और योमोन उदाहरण देखें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.