Heute veröffentlichen wir den vierten Teil der Übersetzung von Node.js. In diesem Artikel werden wir uns mit npm
package.json
und auch die Funktionen der
package-lock.json
package.json
und
package-lock.json
.

[Wir empfehlen Ihnen zu lesen] Andere Teile des ZyklusTeil 1:
Allgemeine Informationen und erste SchritteTeil 2:
JavaScript, V8, einige EntwicklungstricksTeil 3:
Hosting, REPL, Arbeit mit der Konsole, ModuleTeil 4:
Dateien npm, package.json und package-lock.jsonTeil 5:
npm und npxTeil 6:
Ereignisschleife, Aufrufstapel, TimerTeil 7:
Asynchrone ProgrammierungTeil 8:
Node.js-Handbuch, Teil 8: HTTP- und WebSocket-ProtokolleTeil 9:
Node.js-Handbuch, Teil 9: Arbeiten mit dem DateisystemTeil 10:
Node.js-Handbuch, Teil 10: Standardmodule, Streams, Datenbanken, NODE_ENVVollständiges PDF des Node.js-Handbuchs Npm Grundlagen
Npm (Node Package Manager) ist der Node.js-Paketmanager. Im ersten Teil dieses Materials haben wir bereits erwähnt, dass es jetzt in npm mehr als eine halbe Million Pakete gibt, was es zum weltweit größten Repository von Code macht, der in einer Sprache geschrieben ist. Dies deutet darauf hin, dass Sie in npm Pakete finden, die für fast jede Aufgabe entwickelt wurden.
Ursprünglich wurde npm als Paketverwaltungssystem für Node.js erstellt, heute wird es jedoch auch zur Entwicklung von Front-End-Projekten in JavaScript verwendet. Für die Interaktion mit der npm-Registrierung wird der gleichnamige Befehl verwendet, der dem Entwickler eine Vielzahl von Möglichkeiten bietet.
▍Laden von Paketen
Mit dem Befehl
npm
können Sie Pakete aus der Registrierung herunterladen. Im Folgenden werden Beispiele für seine Verwendung betrachtet.
▍Installation aller Projektabhängigkeiten
Wenn das Projekt eine
package.json
Datei hat, können Sie alle Abhängigkeiten dieses Projekts mit dem folgenden Befehl installieren:
npm install
Dieser Befehl lädt alles herunter, was das Projekt benötigt, und
node_modules
diese Materialien im Ordner
node_modules
sie, wenn sie nicht im Projektverzeichnis vorhanden sind.
▍Installieren eines separaten Pakets
Ein separater kann mit dem folgenden Befehl installiert werden:
npm install <package-name>
Sie können oft sehen, wie dieser Befehl nicht in einer so einfachen Form, sondern mit einigen Flags verwendet wird. Betrachten Sie sie:
- Mit
--save
Flag --save
können --save
ein Paket installieren und dem Abschnitt " dependencies
" der Datei package.json
einen Eintrag hinzufügen, in dem die Projektabhängigkeiten beschrieben werden. Diese Abhängigkeiten werden vom Projekt zur Implementierung seiner Hauptfunktionalität verwendet. Sie werden während der Bereitstellung auf dem Server installiert (nach der Veröffentlichung von npm 5 werden Einträge zu installierten Paketen im Abschnitt "Abhängigkeiten" automatisch und ohne Verwendung dieses Flags vorgenommen). - Mit dem
--save-dev
können Sie das Paket installieren und einen Eintrag darüber zu dem Abschnitt hinzufügen, der eine Liste der Entwicklungsabhängigkeiten ( --save-dev
Pakete, die während der Entwicklung des Projekts benötigt werden, wie Bibliotheken zum Testen, aber nicht für dessen Betrieb erforderlich sind) der Datei package.json
enthält devDependencies
.
▍ Pack Update
Verwenden Sie den folgenden Befehl, um Pakete zu aktualisieren:
npm update
Nach Erhalt dieses Befehls überprüft npm alle Pakete auf ihre neuen Versionen. Wenn sie ihre neuen Versionen finden, die den in
package.json
angegebenen
package.json
, installieren Sie sie.
Sie können auch ein separates Paket aktualisieren:
npm update <package-name>
▍Laden von Paketen bestimmter Versionen
Zusätzlich zu den Standard-Paket-Downloads unterstützt npm auch das Herunterladen bestimmter Versionen davon. Insbesondere kann angemerkt werden, dass einige Bibliotheken nur mit bestimmten großen Versionen anderer Bibliotheken kompatibel sind, dh wenn die Abhängigkeiten solcher Bibliotheken ohne Berücksichtigung der Versionen installiert würden, könnte dies ihre Arbeit stören. Die Möglichkeit, eine bestimmte Version eines Pakets zu installieren, ist in Situationen nützlich, in denen beispielsweise die neueste Version dieses Pakets für Sie gut geeignet ist, sich jedoch herausstellt, dass ein Fehler darin vorliegt. Während Sie auf die Veröffentlichung einer festen Version des Pakets warten, können Sie die ältere, aber stabile Version verwenden.
Die Möglichkeit, bestimmte Versionen der für das Projekt erforderlichen Bibliotheken anzugeben, ist bei der Teamentwicklung hilfreich, wenn alle Teammitglieder genau dieselben Bibliotheken verwenden. Der Übergang zu den neuen Versionen erfolgt ebenfalls zentral, indem Änderungen an der
package.json
werden.
In all diesen Fällen ist die Möglichkeit, die für das Projekt erforderlichen Paketversionen anzugeben, äußerst nützlich. Npm folgt dem Standard der semantischen Versionierung (Semver).
▍Skripte ausführen
Die Datei
package.json
unterstützt die Fähigkeit, Befehle (Skripte) zu beschreiben, die mit dieser Konstruktion gestartet werden können:
npm <task-name>
So sieht beispielsweise die Liste der Skripte im entsprechenden Abschnitt der Datei aus:
{ "scripts": { "start-dev": "node lib/server-development", "start": "node lib/server-production" } }
Es ist sehr üblich, diese Funktion zum Starten von Webpack zu verwenden:
{ "scripts": { "watch": "webpack --watch --progress --colors --config webpack.conf.js", "dev": "webpack --progress --colors --config webpack.conf.js", "prod": "NODE_ENV=production webpack -p --config webpack.conf.js", } }
Dieser Ansatz ermöglicht es, die Eingabe langer, fehlerbehafteter Befehle durch die folgenden einfachen Konstruktionen zu ersetzen:
$ npm watch $ npm dev $ npm prod
▍Wo installiert npm Pakete?
Bei der Installation von Paketen mit npm (oder
Garn ) stehen zwei Installationsoptionen zur Verfügung: lokal und global.
Wenn Sie
npm install lodash
einen Befehl wie
npm install lodash
, wird das Paket
node_modules
Ordner
node_modules
im Projektordner
node_modules
. Wenn der obige Befehl ausgeführt wurde, fügt npm außerdem einen Eintrag für die
lodash
Bibliothek zum Abschnitt "
dependencies
" der Datei
package.json
, die sich im aktuellen Verzeichnis befindet.
Die globale Installation von Paketen erfolgt mit dem Flag
-g
:
npm install -g lodash
Durch Ausführen eines solchen Befehls installiert npm das Paket nicht im lokalen Ordner des Projekts. Stattdessen werden die Paketdateien an einen globalen Speicherort kopiert. Wohin gehen diese Dateien genau?
Verwenden Sie den folgenden Befehl, um dies herauszufinden:
npm root -g
Unter MacOS oder Linux werden Paketdateien möglicherweise im
/usr/local/lib/node_modules
. Unter Windows kann es sich um
C:\Users\YOU\AppData\Roaming\npm\node_modules
.
Wenn Sie jedoch Node.js nvm für die Versionskontrolle verwenden, kann sich der Pfad zum globalen Paketordner ändern.
Zum Beispiel verwende ich nvm und der obige Befehl sagt mir, dass globale Pakete unter dieser Adresse installiert sind:
/Users/flavio/.nvm/versions/node/v8.9.0/lib/node_modules
.
▍Verwenden und ausführen Sie Pakete, die mit npm installiert wurden
Wie werden Module verwendet, die mit npm lokal oder global installiert wurden und in die Ordner
node_modules
? Angenommen, Sie haben die beliebte
lodash
Bibliothek installiert, die viele
lodash
enthält, die bei der JavaScript-Entwicklung verwendet werden:
npm install lodash
Ein solcher Befehl installiert die Bibliothek im lokalen Ordner des
node_modules
Projekts.
Um es in Ihrem Code zu verwenden, importieren Sie es einfach mit dem Befehl
require
:
const _ = require('lodash')
Was ist, wenn das Paket eine ausführbare Datei ist?
In diesem Fall wird die ausführbare Datei im
node_modules/.bin/ folder
.
Sie können sehen, wie dieser Mechanismus funktioniert, indem Sie das
Cowsay- Paket installieren. Es ist ein Comic-Programm, das für die Befehlszeile geschrieben wurde. Wenn Sie in der Konsole im Stil der ASCII-Grafik Text an dieses Paket übergeben, wird ein Bild einer Kuh angezeigt, das den entsprechenden Text „ausspricht“. Andere Kreaturen können den Text „aussprechen“.
Nach der Installation des Pakets mit dem
npm install cowsay
wird es zusammen mit seinen Abhängigkeiten in
node_modules
. Und in den versteckten Ordner
.bin
werden symbolische Links zu Caysay-Binärdateien geschrieben.
Wie führe ich sie aus?
Natürlich können
./node_modules/.bin/cowsay
im Terminal so etwas wie
./node_modules/.bin/cowsay
, um das Programm aufzurufen. Dies ist ein funktionierender Ansatz, aber es ist viel besser,
npx zu verwenden, ein Tool zum Starten von ausführbaren Dateien des npm-Pakets, das seit Version 5.2 in npm enthalten ist. In unserem Fall benötigen wir nämlich den folgenden Befehl:
npx cowsay
Der Pfad zum npx-Paket wird automatisch gefunden.
Package.json-Datei
Die Datei
package.json
ist ein wesentliches Element vieler Projekte, die auf dem Node.js-Ökosystem basieren. Wenn Sie in JavaScript programmiert haben, egal ob es sich um eine Server- oder Client-Entwicklung handelt, haben Sie diese Datei wahrscheinlich bereits gesehen. Warum wird es benötigt? Was solltest du über ihn wissen und welche Möglichkeiten bietet er dir?
Package.json
ist eine Art Manifestdatei für ein Projekt. Er stellt dem Entwickler viele verschiedene Möglichkeiten zur Verfügung. Beispielsweise stellt es das zentrale Repository mit Einstellungen für die im Projekt verwendeten Tools dar. Darüber hinaus schreiben
npm und
yarn Informationen zu den Namen und Versionen der installierten Pakete.
▍ Dateistruktur
Hier ist ein Beispiel für eine einfache
package.json
Datei:
{ }
Wie Sie sehen können, ist es leer. Es gibt keine strengen Anforderungen, was in einer solchen Datei für eine bestimmte Anwendung vorhanden sein soll. Die einzige Voraussetzung für die Dateistruktur ist, dass sie den Regeln des JSON-Formats entspricht. Andernfalls kann diese Datei nicht von Programmen gelesen werden, die versuchen, auf ihren Inhalt zuzugreifen.
Wenn Sie ein Node.js-Paket erstellen, das Sie über npm verteilen möchten, ändert sich alles radikal, und Ihre
package.json
sollte über eine Reihe von Eigenschaften verfügen, die anderen
package.json
Verwendung des Pakets helfen. Wir werden später mehr darüber sprechen.
Hier ist ein weiteres Beispiel
package.json
:
{ "name": "test-project" }
Es legt die Eigenschaft
name
, deren Wert der Name der Anwendung oder des Pakets ist, deren Materialien sich in demselben Ordner befinden, in dem sich diese Datei befindet.
Hier ist ein komplizierteres Beispiel, das ich einer Beispielanwendung entnommen habe, die mit Vue.js geschrieben wurde:
{ "name": "test-project", "version": "1.0.0", "description": "A Vue.js project", "main": "src/main.js", "private": true, "scripts": { "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", "start": "npm run dev", "unit": "jest --config test/unit/jest.conf.js --coverage", "test": "npm run unit", "lint": "eslint --ext .js,.vue src test/unit", "build": "node build/build.js" }, "dependencies": { "vue": "^2.5.2" }, "devDependencies": { "autoprefixer": "^7.1.2", "babel-core": "^6.22.1", "babel-eslint": "^8.2.1", "babel-helper-vue-jsx-merge-props": "^2.0.3", "babel-jest": "^21.0.2", "babel-loader": "^7.1.1", "babel-plugin-dynamic-import-node": "^1.2.0", "babel-plugin-syntax-jsx": "^6.18.0", "babel-plugin-transform-es2015-modules-commonjs": "^6.26.0", "babel-plugin-transform-runtime": "^6.22.0", "babel-plugin-transform-vue-jsx": "^3.5.0", "babel-preset-env": "^1.3.2", "babel-preset-stage-2": "^6.22.0", "chalk": "^2.0.1", "copy-webpack-plugin": "^4.0.1", "css-loader": "^0.28.0", "eslint": "^4.15.0", "eslint-config-airbnb-base": "^11.3.0", "eslint-friendly-formatter": "^3.0.0", "eslint-import-resolver-webpack": "^0.8.3", "eslint-loader": "^1.7.1", "eslint-plugin-import": "^2.7.0", "eslint-plugin-vue": "^4.0.0", "extract-text-webpack-plugin": "^3.0.0", "file-loader": "^1.1.4", "friendly-errors-webpack-plugin": "^1.6.1", "html-webpack-plugin": "^2.30.1", "jest": "^22.0.4", "jest-serializer-vue": "^0.3.0", "node-notifier": "^5.1.2", "optimize-css-assets-webpack-plugin": "^3.2.0", "ora": "^1.2.0", "portfinder": "^1.0.13", "postcss-import": "^11.0.0", "postcss-loader": "^2.0.8", "postcss-url": "^7.2.1", "rimraf": "^2.6.0", "semver": "^5.3.0", "shelljs": "^0.7.6", "uglifyjs-webpack-plugin": "^1.1.1", "url-loader": "^0.5.8", "vue-jest": "^1.0.2", "vue-loader": "^13.3.0", "vue-style-loader": "^3.0.1", "vue-template-compiler": "^2.5.2", "webpack": "^3.6.0", "webpack-bundle-analyzer": "^2.9.0", "webpack-dev-server": "^2.9.1", "webpack-merge": "^4.1.0" }, "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" }, "browserslist": [ "> 1%", "last 2 versions", "not ie <= 8" ] }
Wie Sie sehen können, gibt es nur viele interessante Dinge. Folglich können hier folgende Eigenschaften unterschieden werden:
name
- Legt den Namen der Anwendung (des Pakets) fest.version
- enthält Informationen zur aktuellen Version der Anwendung.description
- eine kurze Beschreibung der Anwendung.main
- Legt den Einstiegspunkt für die Anwendung fest.private
- Wenn diese Eigenschaft auf true
, wird verhindert, dass das Paket versehentlich in npm veröffentlicht wird.scripts
- Definiert eine Reihe von Node.js-Skripten, die ausgeführt werden können.dependencies
- enthält eine Liste von npm-Paketen, von denen die Anwendung abhängt.devDependencies
- enthält eine Liste von npm-Paketen, die beim Entwickeln eines Projekts verwendet werden, jedoch nicht, wenn es wirklich funktioniert.engines
- Legt die Liste der Node.js-Versionen fest, auf denen die Anwendung ausgeführt wird.browserlist
- browserlist
zum Speichern der Liste der Browser (und ihrer Versionen), die die Anwendung unterstützen soll.
Alle diese Eigenschaften werden entweder von npm oder von anderen Tools verwendet, die während des gesamten Anwendungslebenszyklus verwendet werden.
▍Eigenschaften, die in package.json verwendet werden
Lassen Sie uns über die Eigenschaften sprechen, die in
package.json
verwendet werden
package.json
. Hier werden wir den Begriff "Paket" verwenden, aber alles, was über Pakete gesagt wird, gilt auch für lokale Anwendungen, die nicht als Pakete verwendet werden sollen.
Die meisten der von uns beschriebenen Eigenschaften werden nur für die Anforderungen des npm-
Repositorys verwendet . Einige werden von Programmen verwendet, die mit Code wie demselben npm interagieren.
Name Eigenschaft
Die
name
Eigenschaft legt den Namen des Pakets fest:
"name": "test-project"
Der Name muss kürzer als 214 Zeichen sein, darf keine Leerzeichen enthalten und darf nur aus Großbuchstaben, Bindestrichen (
-
) und Unterstrichen (
_
) bestehen.
Ähnliche Einschränkungen bestehen, da bei der Veröffentlichung eines Pakets in npm dessen Name zur Bildung der URL der Paketseite verwendet wird.
Wenn Sie den Paketcode auf GitHub in der Public Domain veröffentlicht haben, ist der Name des entsprechenden GitHub-Repositorys eine gute Option für den Paketnamen.
Autor Eigentum
Die Eigenschaft
author
enthält Informationen zum Autor des Pakets:
{ "author": "Flavio Copes <flavio@flaviocopes.com> (https://flaviocopes.com)" }
Es kann im folgenden Format dargestellt werden:
{ "author": { "name": "Flavio Copes", "email": "flavio@flaviocopes.com", "url": "https://flaviocopes.com" } }
Mitwirkende Eigentum
Die Eigenschaft "
contributors
enthält ein Array mit Informationen zu den Personen, die zum Projekt beigetragen haben:
{ "contributors": [ "Flavio Copes <flavio@flaviocopes.com> (https://flaviocopes.com)" ] }
Diese Eigenschaft kann folgendermaßen aussehen:
{ "contributors": [ { "name": "Flavio Copes", "email": "flavio@flaviocopes.com", "url": "https://flaviocopes.com" } ] }
Bugs Eigenschaft
Die Eigenschaft
bugs
enthält einen Link zum Bug-Tracker des Projekts. Es ist sehr wahrscheinlich, dass ein solcher Link zur Seite des GitHub-Fehlerverfolgungssystems führt:
{ "bugs": "https://github.com/flaviocopes/package/issues" }
Homepage-Eigenschaft
Mit der
homepage
Eigenschaft können Sie die Paket-Homepage festlegen:
{ "homepage": "https://flaviocopes.com/package" }
Versionseigenschaft
Die
version
Eigenschaft enthält Informationen zur aktuellen Version des Pakets:
"version": "1.0.0"
Wenn Sie den Wert dieser Eigenschaft bilden, müssen Sie die Regeln der
semantischen Versionierung befolgen. Dies bedeutet insbesondere, dass die Versionsnummer immer dreistellig dargestellt wird: xxx
Die erste Nummer ist die Hauptversion des Pakets, die zweite ist die Nebenversion, die dritte ist die Patch-Version.
Das Ändern dieser Zahlen hat eine bestimmte Bedeutung. Die Veröffentlichung eines Pakets, in dem Fehler nur korrigiert werden, führt somit zu einer Wertsteigerung der Patch-Version. Wenn ein Paket freigegeben wird, dessen Änderungen abwärtskompatibel mit der vorherigen Version sind, ändert sich die Nebenversion. Hauptversionen von Paketen können Änderungen enthalten, die diese Pakete mit Paketen früherer Hauptversionen nicht kompatibel machen.
Lizenz Eigentum
Die
license
Eigenschaft enthält Informationen zur Paketlizenz:
"license": "MIT"
Keywords-Eigenschaft
Die Eigenschaft
keywords
enthält eine Reihe von Schlüsselwörtern, die sich auf die Paketfunktionalität beziehen:
"keywords": [ "email", "machine learning", "ai" ]
Die richtige Auswahl von Schlüsselwörtern hilft den Nutzern bei der Suche nach Paketen zur Lösung bestimmter Probleme zu finden, was sie benötigen, ermöglicht es Ihnen, Pakete zu gruppieren und ihre möglichen Funktionen beim Anzeigen der npm-Site schnell zu bewerten.
Beschreibungseigenschaft
Die
description
Eigenschaft enthält eine kurze Beschreibung des Pakets:
"description": "A package to work with strings"
Diese Eigenschaft ist besonders wichtig, wenn Sie das Paket in npm veröffentlichen möchten, da Benutzer der npm-Site den Zweck des Pakets verstehen können.
Repository-Eigenschaft
Die
repository
Eigenschaft gibt an, wo sich das Paket-Repository befindet:
"repository": "github:flaviocopes/testing",
Beachten Sie, dass der Wert dieser Eigenschaft das Präfix
github
. Npm unterstützt auch Präfixe für einige andere beliebte Dienste dieser Art:
"repository": "gitlab:flaviocopes/testing", "repository": "bitbucket:flaviocopes/testing",
Das bei der Entwicklung des Pakets verwendete Versionskontrollsystem kann auch explizit festgelegt werden:
"repository": { "type": "git", "url": "https://github.com/flaviocopes/testing.git" }
Das gleiche Paket kann verschiedene Versionskontrollsysteme verwenden:
"repository": { "type": "svn", "url": "..." }
Eigenschaft main
Die
main
legt den Einstiegspunkt für das Paket fest:
"main": "src/main.js"
Wenn ein Paket in die Anwendung importiert wird, wird hier die Suche nach dem ausgeführt, was das entsprechende Modul exportiert.
Privateigentum
Die auf
true
gesetzte
private
verhindert
true
dass das Paket versehentlich in npm veröffentlicht wird:
"private": true
Scripts-Eigenschaft
Die Eigenschaft
scripts
legt die Liste der Skripte oder Dienstprogramme fest, die mit den npm-Tools gestartet werden können:
"scripts": { "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js", "start": "npm run dev", "unit": "jest --config test/unit/jest.conf.js --coverage", "test": "npm run unit", "lint": "eslint --ext .js,.vue src test/unit", "build": "node build/build.js" }
Diese Skripte sind Befehlszeilenanwendungen. Sie können sie mit npm bzw. garn ausführen, indem Sie Befehle der Form
npm run XXXX
oder
yarn XXXX
ausführen, wobei
XXXX
der Name des Skripts ist. Zum Beispiel könnte es so aussehen:
npm run dev
Skripte können beliebig aufgerufen werden und fast alles tun, was ein Entwickler möchte.
Abhängigkeitseigenschaft
Die Eigenschaft
dependencies
enthält eine Liste der als Paketabhängigkeiten installierten npm-Pakete:
"dependencies": { "vue": "^2.5.2" }
Bei der Installation eines Pakets mit npm oder Garn werden die folgenden Befehle verwendet:
npm install <PACKAGENAME> yarn add <PACKAGENAME>
Diese Pakete werden automatisch zur Liste der Abhängigkeiten des zu entwickelnden Pakets hinzugefügt.
DevDependencies-Eigenschaft
Die Eigenschaft
devDependencies
enthält eine Liste der als Entwicklungsabhängigkeiten installierten npm-Pakete:
"devDependencies": { "autoprefixer": "^7.1.2", "babel-core": "^6.22.1" }
Diese Liste unterscheidet sich von der Liste, die in der Eigenschaft
dependencies
gespeichert ist, da die darin verfügbaren Pakete nur im System des Paketentwicklers installiert sind und in der praktischen Verwendung des Pakets nicht verwendet werden.
Pakete fallen in diese Liste, wenn sie wie folgt mit npm oder Garn installiert werden:
npm install --dev <PACKAGENAME> yarn add --dev <PACKAGENAME>
Engines Eigentum
Die
engines
Eigenschaft gibt an, welche Versionen von Node.js und anderen Softwareprodukten zur Bereitstellung des Pakets verwendet werden:
"engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0", "yarn": "^0.13.0" }
Browserlist-Eigenschaft
Mit der Eigenschaft
browserlist
können
browserlist
, welche Browser (und deren Versionen) vom Paketentwickler unterstützt werden sollen:
"browserslist": [ "> 1%", "last 2 versions", "not ie <= 8" ]
Diese Eigenschaft wird von Babel, Autoprefixer und anderen Tools verwendet. Durch die Analyse dieser Liste können sie dem Paket nur die Polyfills und Hilfsmechanismen hinzufügen, die für die aufgelisteten Browser erforderlich sind.
Der Wert der hier als Beispiel gezeigten
browserlist
Eigenschaft bedeutet, dass Sie mindestens 2 Hauptversionen aller Browser mit mindestens 1% Nutzung unterstützen möchten (diese Daten stammen von
CanIUse.com ), mit Ausnahme von IE 8 und älteren Versionen dieses Browsers (mehr Dies finden Sie auf der
Paketseite der
Browserlisten .
▍Speichern Sie in den package.json-Einstellungen für verschiedene Softwaretools
In
package.json
Sie Einstellungen für verschiedene Hilfstools wie Babel oder ESLint speichern.
Jedes dieser Tools verfügt über eine spezielle Eigenschaft wie
eslintConfig
oder
babel
. Details zur Verwendung solcher Eigenschaften finden Sie in der Dokumentation der jeweiligen Projekte.
▍Über Paketversionen und semantische Versionierung
, , , . ,
~3.0.0
^0.13.0
. , , .
, , , , :
~
: ~0.13.0
, - . , 0.13.1
, 0.14.0
— .^
: ^0.13.0
, , - . , 0.13.1
, 0.14.0
, .*
: , , , — .>
: , .>=
: , .<=
: , .<
: , .=
: .-
: , — 2.1.0 - 2.6.2
.||
: , . < 2.1 || > 2.6
.
:
, , -. ,
1.0.0 || >=1.1.0 <1.2.0
,
1.0.0
, ,
1.1.0
,
1.2.0
.
package-lock.json
package-lock.json
npm 5. Node.js-. ? ,
package.json
, .
, , , , .
,
package.json
.
package.json
, (- ) .
Git
node_modules
, . ,
npm install
, , ,
~
, -, , , -.
^
. , , , .
, - ,
npm install
. , . , , - , , , ( ) .
package-lock.json
npm
npm install
.
, , ( Composer PHP) .
package-lock.json
Git-, , , , , Git .
package-lock.json
npm update
.
▍ package-lock.json
package-lock.json
, cowsay, npm
install cowsay
:
{ "requires": true, "lockfileVersion": 1, "dependencies": { "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3. 0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" }, "cowsay": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/cowsay/-/cowsay-1.3.1.tgz" , "integrity": "sha512-3PVFe6FePVtPj1HTeLin9v8WyLl+VmM1l1H/5P+BTTDkM Ajufp+0F9eLjzRnOHzVAYeIYFF5po5NjRrgefnRMQ==", "requires": { "get-stdin": "^5.0.1", "optimist": "~0.6.1", "string-width": "~2.1.1", "strip-eof": "^1.0.0" } }, "get-stdin": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0. 1.tgz", "integrity": "sha1-Ei4WFZHiH/TFJTAwVpPyDmOTo5g=" }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/ is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" }, "minimist": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10 .tgz", "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=" }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "requires": { "minimist": "~0.0.1", "wordwrap": "~0.0.2" } }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" } }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "requires": { "ansi-regex": "^3.0.0" } }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" } } }
. cowsay, :
- get-stdin
- optimist
- string-width
- strip-eof
, , ,
requires
, :
- ansi-regex
- is-fullwidth-code-point
- minimist
- wordwrap
- strip-eof
,
version
,
resolved
, ,
integrity
, .
npm
package.json
package-lock.json
. npm npx.
Liebe Leser! — npm yarn?
