Node.js projeleri için package.json dosyasını otomatik olarak oluşturmanın bir yolu var mı


412

Package.json dosyasının elle düzenlenmesi gerekiyor mu? Npm gibi bir program sadece dosyaları inceleyip, "zorunlu" ifadelerine bakın ve sonra package.json dosyasına gerekli girişleri koymak için bunu kullanamaz mı? Bunun gibi programlar var mı?


2
şimdiye kadar, dosyayı el ile düzenledim: ihtiyacım olan her paketi (ve min. sürümünü) ekleyerek. sonra koşnpm link
pkyeck

22
@neuromancer lütfen doğru cevabı kabul edebilir misiniz ? 38+ oyu ile açıkça ...
Esteban

2
npmjs.org/doc/install.html , bu yeni bir paket kurarken package.json'u otomatik olarak güncellemek için de kullanılabilir
V31

1
@neromancer, Gibson kitaplarını bırak ve düzelt! :)
prasanthv

1
npmjs.com/package/npm-collect tam olarak bunu ve daha fazlasını yapıyor
coderofsalvation

Yanıtlar:


601

Package.json dosyası, node.js projeniz hakkında bilgi edinmek için npm tarafından kullanılır .

kullanım npm initSizin için package.json dosyaları oluşturmak için !

Npm ile birlikte geliyor. Belgelerini buradan okuyun: https://docs.npmjs.com/cli/init

Ayrıca, bu dosyayı programlı olarak oluşturmak için kullanabileceğiniz resmi bir araç vardır: https://github.com/npm/init-package-json


9
Teşekkürler npm initsadece aradığım şeydi! Ayrıca bundan sonra genellikle npm shrinkwrapbir npm-shrinkwrap.jsondosya oluşturmaya
çalışırım

75
Başına npm init: npm install <pkg> --saveDaha sonra paketi yüklemek ve package.json dosyasına bağımlılık olarak kaydetmek için kullanın .
Brad Koch

5
npm initVisual Studio 2015'ten Paket Yöneticisi Konsolu'nda çalıştırıldıktan sonra , [...] Press ^C at any time to quit.hiçbir şey sormadan veya json dosyası oluşturmadan görüntüler ve durur. Bir şey mi kaçırıyorum?
Michael Hilus

2
npmjs.com/package/npm-collect önceden kurulmuş modülleri toplamanızı sağlar
coderofsalvation

3
npm init --force --yesbu dosyayı oluşturmak için tek astar
Bernhard Döbler

204

İlk önce, koş

npm init

... projeniz / paketiniz hakkında birkaç soru soracaktır ( önce bunu okuyun ) ve sonra sizin için bir package.json dosyası oluşturun.

Ardından, bir package.json dosyanız varsa, şunu kullanın:

npm install <pkg> --save

veya

npm install <pkg> --save-dev

... Bir bağımlılık yüklemek ve otomatik olarak bunu eklemek için package.json'ın dependencieslistesinde.

(Not: Bağımlılıklarınız için sürüm aralıklarını manuel olarak değiştirmeniz gerekebilir.)


6
Şimdi package.json oluşturmuyor gibi görünüyor. win7x64 düğümü0.10.9
atian25

33
Cevabımın tamamını almayı, bir satır için kaydetmeyi, yeniden yazmayı ve hala bana atfedilmeyi gerçekten takdir etmiyorum. Modası geçmiş olsun ya da olmasın.
nzondlo

Npm init ile ilgili özel belgeler burada
shmim

1
Bu doğru cevap olmalı. Her zaman manuel olarak dokunmanıza gerek yoktur package.json, genellikle otomatik olarak kullanılır.
Sallar

1
--saveyeni npm sürümlerinde artık gerekli değil
David Callanan

180

Sadece ./node_modules içindeki bağımlılıkları toplamak için basit bir senaryo yazdım. Şu anda ihtiyacımı karşılıyor. Bu bazılarına yardımcı olabilir, buraya gönderirim.

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();

Benim durumumda, yukarıdaki komut dosyası çıktıları:

"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.

Şimdi bunları kopyalayıp yapıştırabilirsiniz. İyi eğlenceler!


39
bunu bir npm modülü olarak yayınlamalısınız
Ben

Şimdi 770 satır geri geldiğinde ne yapıyorsun ..? Dev.bson da dahil olmak üzere package.json içinde sadece 58 tane var. - /
Sherzod


3
Bu, bununla başa çıkmak için doğru bir yol değildir. Bu, her modüldeki her bağımlılığın çıktısını verecektir. Yani paket paket ihtiyacı varsa a, ve paket apaketlerini ihtiyaç bve ctüm seviyeler, bu nedenle, bu yazı irade çıkışı a, b, changi değil doğru. Sadece çıktı almalı a, alt paketler otomatik olarak çözülecektir.
Sallar

Benim mi, yoksa çoğu yanıt node_modules'ün elle kopyalandığı veya oluşturulduğu mevcut bir sistemden başlamadığınızı varsayıyor mu? İçinde özel modüller bulunan bir proje klasörü teslim aldığım zamanlar var ve depoya erişimim yok. Yine de veri havuzuma modüller koyduğumda projenin yeniden oluşturulmasını otomatikleştirmek istiyorum. Ya da belki de 'sadece bu node_modules klasörünü kopyalamam' istenir. evet, evet, en iyi uygulamalar, ama ne yaptığını bilmeyen geliştiricilerin gerçekleriyle ilgileniyorum. Bu, böyle bir projeyi düzeltmeye başlamama yardımcı oluyor. Paylaşım için teşekkürler!
noelhx

82

npm init

.json dosyasını oluşturmak için

ls node_modules/ | xargs npm install --save

node_modules klasöründe bulunan modülleri doldurmak için.

Düzenleme: @paldepind, npm initartık otomatik olarak node_modules / klasörünüze eklediğiniz için ikinci komutun gereksiz olduğuna dikkat çekti . Bunun her zaman böyle olup olmadığını bilmiyorum, ama şimdi en azından ikinci komut olmadan çalışıyor.


5
Yüklediğiniz her modül için --save kullanmadıysanız bu son derece yararlıdır.

7
npm initYüklü paketlere göre otomatik olarak bağımlılıklar eklediğini ve ikinci komutu çalıştırmaya gerek olmadığını buldum .
paldepind

Bu şekilde node_modules klasör adlarına güvenebileceğinizden çok memnunum ... vay!
DT Rush

Bu, npm dedupemodüller arasında paylaşılan bağımlılıkları bu modüllerden dışarı çeken ve bunları node_modulesdizininizin en üst düzeyinde depolayan, kullanıldığında fevkalade faydalıdır . Ama dokunmuyor package.json! Bununla, tekilleştirilen kurulumunuzu taahhüt edebilir ve paylaşabilirsiniz.
Patojen

1
Aslında bundan sonra package.json ekleyen herkes için harika bir cevap.
Carrie Kendall

24

Komut satırı :

npm init

package.json dosyası oluşturacak

Bağımlılıklar altındaki paketleri package.json dosyasına yüklemek, güncellemek ve kaldırmak için:

Komut satırı :

npm install <pkg>@* --save 

otomatik olarak bağımlılıklar altındaki paketin en son sürümünü package.json dosyasına ekleyecektir

EX:

npm install node-markdown@* --save

Komut satırı :

npm install <pkg> --save

ayrıca bağımlılıklar altındaki paketin en son sürümünü otomatik olarak package.json dosyasına ekleyecektir

bir paket için belirli bir sürüme ihtiyacınız varsa bu Komut satırını kullanın :

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

otomatik olarak bağımlılıklar altında paketin belirli bir sürümünü package.json dosyasına ekleyecektir

EX:

npm install koa-views@1.0.0 --save

bir paket için belirli bir sürüm aralığına ihtiyacınız varsa bu Komut satırını kullanın :

npm install <pkg>@<version range>

otomatik olarak paketin en son sürümünü bağımlılıklar altındaki sürüm aralığı arasında package.json dosyasına otomatik olarak ekler

EX:

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

İçin paket için sürüm yazma konusunda daha fazla ayrıntı npm Doc

Komut satırı :

npm update --save

paketleri package.json dosyasına güncelleyecek ve bağımlılıklar altındaki tüm paketler için otomatik olarak package.json dosyasına güncellenmiş sürümü ekleyecektir

Komut satırı :

npm uninstall <pkg> --save

paketi bağımlılıklardan otomatik olarak package.json dosyasına kaldıracak ve paketi node_module klasöründen kaldıracak


14

Koşu tüm varsayılanlarla npm init -yyapar package.json.
Daha sonra package.jsonbuna göre değiştirebilirsiniz.
Bu enter, her komutun üzerine basılmasını önleyerek zamandan tasarruf sağlarnpm init


6

Artık Yeoman - Modern Web App İskele Aracını kullanabilirsiniz 3 terminali kullanarak düğüm terminalinde kullanabilirsiniz.

İlk olarak, yo ve diğer gerekli araçları yüklemeniz gerekir:

$ npm install -g yo bower grunt-cli gulp

Bir web uygulamasını iskele etmek için, jeneratör-webapp jeneratörünü kurun :

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

Yo koş ve ... işiniz bitti:

$ yo webapp  // create scaffolding 

Yeoman, tüm web uygulamanız veya Denetleyiciler ve Modeller için kaynak kodu yazabilir. Düzenlemeler ve derleme için canlı önizleme web sunucusunu çalıştırabilir; sadece birim testlerinizi gerçekleştirebilir, kodunuzu en aza indirebilir ve birleştirebilir, görüntüleri optimize edebilir ve daha fazlasını yapabilirsiniz ...

Yeoman (yo) - daha önce bahsedilen sıkıcı görevlerin bazılarını gerçekleştirmek için kullanılabilen, jeneratörler olarak adlandırılan, çerçeveye özgü iskelelerin ekosistemini sunan iskele aracı.

Grunt / gulp - projenizi oluşturmak, önizlemek ve test etmek için kullanılır.

Bower - bağımlılık yönetimi için kullanılır, böylece artık ön uç kitaplıklarınızı manuel olarak indirmeniz gerekmez.


5

Pylinux'un cevabına dayanarak, aşağıda Windows işletim sistemi için bir çözüm,

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

Umarım yardımcı olur.


Ya, sadece abc.txt üstünde npm install yazabilirsiniz ve altta - yeni bağlantıyı kaldır ile kaydetmek bile çalışacaktır.
Roni

Yardımcı olurken, uygulamanın başarısız olmasına neden olabilecek yanlış NPM paketlerinin yüklenebileceğini unutmayın.
jarmod

1

package.json dosyası oluşturmak için npm init -f komutunu kullanın ve bundan sonra - her komuttan sonra --save komutunu kullanın, böylece her modül otomatik olarak paketinizin içinde güncellenir. ex: npm install express --save için


0

1. Seçim

Eğer siz git'e ve GitHub kullanıcı:

    generate-packagedaha basit npm init.

Başka

ve / veya şu package.jsonpaketi npm initoluşturan veya üreten şablonu beğenmezsiniz :

oluşturma , yelken veya yeoman     gibi iskele uygulamaları aracılığıyla kendi şablonunuzu oluşturabilirsiniz .


2. Alaka Düzeyi

Bu cevap Mart 2018 için geçerlidir. Gelecekte, bu cevaptan elde edilen veriler eski olabilir.

Bu cevabın yazarı Mart 2018'de kişisel olarak oluşturma paketi kullandı.


3. Sınırlamalar

Oluşturma paketi kullanmak için git ve GitHub kullanmanız gerekir.


4. Gösteri

Örneğin, boş klasör oluşturuyorum sasha-npm-init-vs-generate-package .

4.1. oluşturmak paket

Komut:

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. npm başlangıcı

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"
}

Bence, generate-packagedaha basit, bu npm init.


5. Özelleştirme

Bu kendi package.jsonşablonunuzu oluşturun , bakınız oluşturma ve yeoman örnekleri.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.