Soll package.json manuell bearbeitet werden? Könnte ein Programm wie npm nicht einfach die Dateien durchsuchen, die "require" -Anweisungen anzeigen und dann die erforderlichen Einträge in die Datei package.json einfügen? Gibt es solche Programme?
Soll package.json manuell bearbeitet werden? Könnte ein Programm wie npm nicht einfach die Dateien durchsuchen, die "require" -Anweisungen anzeigen und dann die erforderlichen Einträge in die Datei package.json einfügen? Gibt es solche Programme?
Antworten:
Die Datei package.json wird von npm verwendet , um mehr über Ihr node.js-Projekt zu erfahren.
Verwenden Sie npm init
diese Option, um package.json-Dateien für Sie zu generieren!
Es kommt mit npm gebündelt. Lesen Sie die Dokumentation hier: https://docs.npmjs.com/cli/init
Außerdem gibt es ein offizielles Tool, mit dem Sie diese Datei programmgesteuert generieren können: https://github.com/npm/init-package-json
npm init
war genau das, wonach ich gesucht habe! Auch danach laufe ich normalerweise npm shrinkwrap
, um eine npm-shrinkwrap.json
Datei zu erstellen
npm init
: Verwenden npm install <pkg> --save
Sie diese Option anschließend, um ein Paket zu installieren und als Abhängigkeit in der Datei package.json zu speichern.
npm init
in der Package Manager-Konsole von Visual Studio 2015 wird sie nur angezeigt [...] Press ^C at any time to quit.
und gestoppt, ohne dass Sie etwas fragen oder die JSON-Datei erstellen müssen. Vermisse ich etwas
npm init --force --yes
ist der einzige Liner, der diese Datei generiert
Zuerst laufen
npm init
... wird Ihnen einige Fragen ( lesen Sie diese zuerst ) zu Ihrem Projekt / Paket stellen und dann eine package.json-Datei für Sie generieren.
Sobald Sie eine package.json-Datei haben, verwenden Sie
npm install <pkg> --save
oder
npm install <pkg> --save-dev
... eine Abhängigkeit zu installieren und automatisch hängen Sie ihn an Ihre package.json
‚s dependencies
Liste.
(Hinweis: Möglicherweise müssen Sie die Versionsbereiche für Ihre Abhängigkeiten manuell anpassen.)
package.json
, es wird normalerweise automatisch behandelt.
--save
ist in neueren npm-Versionen nicht mehr erforderlich
Ich habe gerade ein einfaches Skript geschrieben, um die Abhängigkeiten in ./node_modules zu sammeln. Es erfüllt meine Anforderungen im Moment. Dies kann einigen anderen helfen, ich poste es hier.
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();
In meinem Fall gibt das obige Skript Folgendes aus:
"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.
Jetzt können Sie sie kopieren und einfügen. Habe Spaß!
npm ls --depth=0
mehr oder weniger gleich gedruckt wird (nicht sicher, ob dies 2012 der Fall war)
a
und Paket a
benötigt Pakete b
und c
, dieses Skript gibt alle Ebenen, so a
, b
, c
das ist nicht richtig. Es sollte nur ausgegeben werden a
, die Unterpakete werden automatisch aufgelöst.
npm init
um die package.json Datei zu erstellen und dann verwenden Sie
ls node_modules/ | xargs npm install --save
um die Module auszufüllen, die Sie im Ordner node_modules haben.
Bearbeiten: @paldepind wies darauf hin, dass der zweite Befehl redundant ist, da npm init
jetzt automatisch hinzugefügt wird, was Sie in Ihrem node_modules / Ordner haben. Ich weiß nicht, ob dies schon immer der Fall war, aber jetzt funktioniert es zumindest ohne den zweiten Befehl.
npm init
Abhängigkeiten basierend auf installierten Paketen automatisch hinzugefügt wurden und dass der zweite Befehl nicht ausgeführt werden musste.
npm dedupe
Abhängigkeiten, die von Ihren Modulen gemeinsam genutzt werden, aus diesen Modulen entfernt und auf der obersten Ebene Ihres node_modules
Verzeichnisses gespeichert . Aber es berührt nicht package.json
! Auf diese Weise können Sie Ihr dedupliziertes Setup festschreiben und freigeben.
Befehlszeile :
npm init
erstellt die Datei package.json
So installieren, aktualisieren und deinstallieren Sie Pakete unter Abhängigkeiten in der Datei package.json:
Befehlszeile :
npm install <pkg>@* --save
fügt automatisch die neueste Version für das Paket unter Abhängigkeiten in die Datei package.json ein
EX:
npm install node-markdown@* --save
Befehlszeile :
npm install <pkg> --save
Außerdem wird automatisch die neueste Version für das Paket unter Abhängigkeiten in die Datei package.json eingefügt
Wenn Sie eine bestimmte Version für ein Paket benötigen, verwenden Sie diese Befehlszeile :
npm install <pkg>@<version> --save
fügt automatisch eine bestimmte Version des Pakets unter Abhängigkeiten in die Datei package.json ein
EX:
npm install koa-views@1.0.0 --save
Wenn Sie einen bestimmten Versionsbereich für ein Paket benötigen, verwenden Sie diese Befehlszeile :
npm install <pkg>@<version range>
fügt automatisch die neueste Version für das Paket zwischen dem Versionsbereich unter Abhängigkeiten in die Datei package.json ein
EX:
npm install koa-views@">1.0.0 <1.2.0" --save
Für weitere Informationen darüber , wie Version für Paket schreiben npm Doc
Befehlszeile :
npm update --save
aktualisiert Pakete in der Datei package.json und fügt automatisch eine aktualisierte Version für alle Pakete unter Abhängigkeiten in die Datei package.json ein
Befehlszeile :
npm uninstall <pkg> --save
Entfernt das Paket automatisch aus den Abhängigkeiten in die Datei package.json und entfernt das Paket aus dem Ordner node_module
Laufen npm init -y
macht Sie package.json
mit allen Standardeinstellungen.
Anschließend können Sie ändern package.json
dementsprechend
Dieses Mal viele Zeiten spart , indem Sie verhindern enter
auf jeden Befehl innpm init
Sie können das Yeoman - Modern Web App Scaffolding Tool jetzt in drei einfachen Schritten auf dem Knotenterminal verwenden.
Zuerst müssen Sie yo und andere erforderliche Tools installieren:
$ npm install -g yo bower grunt-cli gulp
Installieren Sie den Generator-Webapp- Generator , um eine Webanwendung zu erstellen :
$ npm install -g generator-webapp // create scaffolding
Lauf yo und ... du bist fertig:
$ yo webapp // create scaffolding
Yeoman kann Boilerplate-Code für Ihre gesamte Webanwendung oder Controller und Modelle schreiben. Es kann einen Webserver mit Live-Vorschau zum Bearbeiten und Kompilieren starten. Sie können nicht nur Unit-Tests durchführen, Ihren Code minimieren und verketten, Bilder optimieren und vieles mehr ...
Yeoman (yo) - Gerüstwerkzeug, das ein Ökosystem von gerüstspezifischen Gerüsten bietet, die als Generatoren bezeichnet werden und zur Ausführung einiger der zuvor genannten mühsamen Aufgaben verwendet werden können.
Grunzen / Schlucken - wird verwendet, um Ihr Projekt zu erstellen, in der Vorschau anzuzeigen und zu testen.
Bower - wird für das Abhängigkeitsmanagement verwendet, sodass Sie Ihre Front-End-Bibliotheken nicht mehr manuell herunterladen müssen.
Basierend auf der Antwort von Pylinux finden Sie unten eine Lösung für das Windows-Betriebssystem:
dir node_modules > abc.txt
FOR /F %k in (abc.txt) DO npm install --save
Ich hoffe es hilft.
Verwenden Sie den Befehl npm init -f, um die Datei package.json zu generieren, und verwenden Sie danach --save nach jedem Befehl, damit jedes Modul automatisch in Ihrer package.json aktualisiert wird, z. B. npm install express --save
Wenn Sie Git und GitHub Benutzer:
generate-package
einfacher als npm init
.
sonst
und / oder Sie mögen keine package.json
Vorlage, die ein Paket npm init
generiert oder generiert:
Sie können Ihre eigene Vorlage über Gerüst-Apps wie Generieren , Segeln oder Yeoman erstellen .
Diese Antwort ist für März 2018 relevant. In Zukunft sind die Daten aus dieser Antwort möglicherweise veraltet.
Der Autor dieser Antwort hat das Generate-Paket im März 2018 persönlich verwendet.
Sie müssen git und GitHub verwenden, um generate-package zu verwenden.
Zum Beispiel erstelle ich einen leeren Ordner sasha-npm-init-vs-generate-package
.
Befehl:
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"
]
}
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"
}
Ich denke, das generate-package
einfacher, das npm init
.
Das erstellen Sie Ihre eigene package.json
Vorlage, siehe generieren und yeoman Beispiele.
npm link