Inhaltsverzeichnis
npm-Versionsnummerndefinition
package.json怎么识别依赖版本
不要太相信npm包的版本号!
dependencies、devDependencies与peerDependencies
dependencies
Abhängigkeiten
devDependencies
peerDependencies
Heim Web-Frontend js-Tutorial Lassen Sie uns darüber sprechen, wie Sie package.json für die Versionsverwaltung abhängiger Pakete verwenden

Lassen Sie uns darüber sprechen, wie Sie package.json für die Versionsverwaltung abhängiger Pakete verwenden

Aug 09, 2022 pm 03:08 PM
npm package.json

In diesem Artikel geht es um die Verwendung von package.json zur Durchführung der Versionsverwaltung für abhängige Pakete in tatsächlichen Front-End-Projekten. Welche Auswirkungen werden unterschiedliche Regeln auf das Abhängigkeitsmanagement haben?

Lassen Sie uns darüber sprechen, wie Sie package.json für die Versionsverwaltung abhängiger Pakete verwenden

npm-Versionsnummerndefinition

Versionsformat: X.Y.Z[-string]X.Y.Z[-string]
其含义为:

  • X:主版本号
  • Y:次版本号
  • Z:修正版本号
  • string: 先行版本号或版本编译信息

举个例子:

6.3.2-alpha的含义为:

  • 主版本号6,有6次不可向下兼容的更新迭代。

  • 次版本号3,有3次小的功能迭代。6.*.*

  • 修正版本号2,有2次bug修改或其他非重大功能的修改。6.*.*

  • 先行版本号alpha,表示处理试验阶段。

扩展阅读:语义化版本 2.0.0

package.json怎么识别依赖版本

将按下述代码进行阐释:

"vue": "~2.5.22",
"vue-class-component": "^6.0.0",
"vue-router": "3.0.1",
"express": "latest",
"mongoose": "*",
Nach dem Login kopieren
  • 符号^:锁定主版本,可更新次版本号、修正版本号和先行版本号

    例如"vue-class-component": "^6.0.0",安装依赖时,可以安装符合6.*.* 的任意版本,只要主版本号是6即可。

  • 符号~:锁定主版本号和次版本号,可更新修正版本号和先行版本号

    例如"vue": "~2.5.22",安装依赖时,可以安装符合2.5.*的任意版本。

  • 空符号:锁定所有版本号

    例如"vue-router": "3.0.1",只能安装版本为3.0.1的依赖包。

  • 符号*:定义某个版本号范围

    例如vue-router": "3.0.*",可以安装3.0固定的任意版本,比如3.0.13.0.2

  • latest:安装最新的稳定版本

Lassen Sie uns darüber sprechen, wie Sie package.json für die Versionsverwaltung abhängiger Pakete verwenden

  • 例如"express": "latest",可以安装4.18.1  (2022.06.13最新版本)。

  • *:安装最新发布的版本,不一定是稳定版本

Lassen Sie uns darüber sprechen, wie Sie package.json für die Versionsverwaltung abhängiger Pakete verwenden

  • 例如"mongoose": "*",可以安装6.0.0-rc23.9.7等。

  • Git URL:使用Git上发布的包

    引用格式: <protocol>://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path>[#<commit-ish> | #semver:<semver>]</semver></commit-ish></path></port></hostname></password></user></protocol>

"test": "git+ssh://git@github.com:npm/cli.git#v1.0.27"
Nach dem Login kopieren

扩展阅读:npm docs - dependencies

不要太相信npm包的版本号!

如题,这个是血的教训换来的经验。

笔者在使用system.js时,使用的版本限制是:system.js: "^6.3.2"

在安装依赖的时候,意外安装了> 6.3.2的版本,导致项目运行出错。

原因就是system.js作者,没有按照semver规范,进行版本号命名,导致笔者的项目,引入了不可向下兼容的更新,进而使项目运行出错。

dependencies、devDependencies与peerDependencies

dependencies

生产环境中使用到的依赖,统一安装在dependencies下。

举个例子:

"dependencies": {
	"chalk": "^2.4.2",
	"commander": "^3.0.0",
	"fs-extra": "^8.1.0",
	"inquirer": "^6.5.0",
	"mem-fs": "^1.1.3",
	"mem-fs-editor": "^6.0.0",
	"shelljs": "^0.8.3"
}
Nach dem Login kopieren

上述代码,是笔者做的cli工具包的package.json中的片段。
shelljs用于操作文件,如果改在devDependencies声明,则用户安装当前工具包后,运行会报错。
因为devDependencies字段声明的依赖,在npm install 工具包时,是不会安装的。必须在dependenciesDie Bedeutung ist:

  • X: Hauptversionsnummer
  • Y: Nebenversionsnummer
  • Z: überarbeitete Versionsnummer
  • Zeichenfolge: Vorabversionsnummer oder Informationen zur Versionskompilierung
🎜Zum Beispiel: 🎜🎜6.3.2-alpha ist: 🎜
  • 🎜Hauptversion Nummer 6, es gibt 6 Update-Iterationen, die nicht abwärtskompatibel sind . 🎜
  • 🎜Version Nummer 3, es gibt 3 kleine Funktionsiterationen. Die Abhängigkeitsanweisung von 6.*.*
  • 🎜Korrigierte Version Nummer 2, mit 2 Fehlerbehebungen oder anderen nicht wesentlichen Funktionsänderungen. Die Abhängigkeitsanweisung von 6.*.*
  • 🎜Die erweiterte Versionsnummer alpha gibt das experimentelle Stadium der Verarbeitung an. 🎜
🎜Erweiterte Lektüre: Semantik-Version 2.0.0🎜

Wie man Abhängigkeitsversionen in package.json identifiziert🎜🎜 wird anhand des folgenden Codes erklärt: 🎜
"devDependencies": {
	"@commitlint/cli": "^8.1.0",
	"@commitlint/config-conventional": "^8.1.0",
	"commitizen": "^4.0.3",
	"commitlint-config-cz": "^0.12.1",
	"cz-customizable": "^6.2.0",
	"standard-version": "^7.0.0"
}
Nach dem Login kopieren
Nach dem Login kopieren

  • 🎜Symbol ^: Sperrt die Hauptversion und kann die Nebenversionsnummer, die überarbeitete Versionsnummer und die erweiterte Versionsnummer aktualisieren🎜🎜Zum Beispiel „vue-class-component“: „^6.0.0“, bei der Installation von Abhängigkeiten können Sie jede Version installieren, die 6.*.* entspricht, solange es sich um die Hauptversion handelt Zahl ist 6. 🎜
  • 🎜Symbole ~: Sperren Sie die Hauptversionsnummer und die Nebenversionsnummer und aktualisieren Sie die überarbeitete Versionsnummer und die erweiterte Versionsnummer🎜🎜Zum Beispiel "vue": "~2.5.22", bei der Installation von Abhängigkeiten können Sie jede Version installieren, die 2.5.* entspricht. 🎜
  • 🎜Leeres Symbol: Alle Versionsnummern sperren🎜🎜Zum Beispiel "vue-router": "3.0.1" code > können nur abhängige Pakete mit der Version 3.0.1 installiert werden. 🎜
  • 🎜Symbol*: Definieren Sie einen bestimmten Versionsnummernbereich🎜🎜Zum Beispiel vue-router": "3.0.*" code>, Sie können jede durch 3.0 korrigierte Version installieren, z. B. 3.0.1, 3.0.2 🎜
  • 🎜. latest: Installieren Sie die neueste stabile Version🎜🎜Lassen Sie uns darüber sprechen, wie Sie package.json für die Versionsverwaltung abhängiger Pakete verwenden🎜
    • 🎜Zum Beispiel "express": "latest ", Sie können 4.18.1 (die neueste Version von 2022.06.13) installieren 🎜
    • 🎜*: Installieren die neueste veröffentlichte Version, nicht unbedingt die neueste Version🎜
    🎜Lassen Sie uns darüber sprechen, wie Sie package.json für die Versionsverwaltung abhängiger Pakete verwenden🎜
    • 🎜Zum Beispiel "mongoose": "*", können Sie Installieren Sie 6.0.0-rc2, 3.9.7 usw. 🎜
    • 🎜Git-URL: Verwenden Sie das am veröffentlichte Paket Git 🎜🎜Zitatformat: <protokoll>: //[<benutzer>[:<passwort>]@]<hostname>[:<port>][:][/]<pfad> |. #semver:&lt ;semver>]</pfad></port></hostname></passwort></benutzer></protokoll>🎜
    {
      "name": "tea-latte",
      "version": "1.3.5",
      "peerDependencies": {
        "tea": "2.x"
      }
    }
    Nach dem Login kopieren
    Nach dem Login kopieren
    🎜Erweiterte Lektüre: npm docs - dependencies🎜

    Vertrauen Sie der Versionsnummer des npm-Pakets nicht zu sehr! 🎜🎜Wie der Titel schon sagt, handelt es sich dabei um die durch Blutunterricht gesammelten Erfahrungen. 🎜🎜Wenn der Autor system.js verwendet, lautet die verwendete Versionsbeschränkung: system.js: "^6.3.2". 🎜🎜Bei der Installation von Abhängigkeiten wurde versehentlich die Version von > 6.3.2 installiert, was dazu führte, dass das Projekt nicht richtig ausgeführt wurde. 🎜🎜Der Grund dafür ist, dass der Autor von system.js die Versionsnummer nicht gemäß der semver-Spezifikation benannt hat, was zur Einführung von „nicht abwärtskompatibel“ führte in mein Projekt > Update, was dazu führt, dass das Projekt nicht ordnungsgemäß ausgeführt wird. 🎜

    Abhängigkeiten, devDependencies und peerDependencies🎜

    Abhängigkeiten

    🎜Abhängigkeiten, die in der Produktionsumgebung verwendet werden, werden einheitlich unter Abhängigkeiten installiert. 🎜🎜Zum Beispiel: 🎜rrreee🎜Der obige Code ist ein Fragment aus der package.json des vom Autor erstellten cli-Toolkits. 🎜shelljs wird zum Betreiben von Dateien verwendet. Wenn die Anweisung in devDependencies geändert wird, wird ein Fehler gemeldet, nachdem der Benutzer das aktuelle Toolpaket installiert. 🎜Weil die im Feld devDependencies deklarierten Abhängigkeiten nicht installiert werden, wenn npm install tool package. Es muss im Feld dependencies deklariert werden, bevor es installiert wird. 🎜

    devDependencies

    生产环境不需要使用的依赖,都需要安装在devDependencies下。
    因为生产环境下,是不会安装devDependencies字段下的依赖的。

    举个例子:

    "devDependencies": {
    	"@commitlint/cli": "^8.1.0",
    	"@commitlint/config-conventional": "^8.1.0",
    	"commitizen": "^4.0.3",
    	"commitlint-config-cz": "^0.12.1",
    	"cz-customizable": "^6.2.0",
    	"standard-version": "^7.0.0"
    }
    Nach dem Login kopieren
    Nach dem Login kopieren

    上述代码,是笔者做的cli工具包的package.json中的片段。
    commitizen是笔者用于规范Git提交规范的依赖包,只在开发环境中使用,所以在devDependencies中声明。

    peerDependencies

    当开发一些插件和工具包时,对使用方的运行环境的依赖包版本有要求,可以使用peerDependencies字段进行声明。

    举个例子:

    {
      "name": "tea-latte",
      "version": "1.3.5",
      "peerDependencies": {
        "tea": "2.x"
      }
    }
    Nach dem Login kopieren
    Nach dem Login kopieren

    当前工具tea-latte,依赖tea包。而且,要求tea包是主版本2。

    当不满足要求时,控制台会进行报错处理。

    注意
    npm v7版本, peerDependencies会默认安装。
    npm  v3 到 npm v6版本, peerDependencies不会自动安装。

    更多node相关知识,请访问:nodejs 教程

    Das obige ist der detaillierte Inhalt vonLassen Sie uns darüber sprechen, wie Sie package.json für die Versionsverwaltung abhängiger Pakete verwenden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

    Heiße KI -Werkzeuge

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    Video Face Swap

    Video Face Swap

    Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

    Heiße Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    JavaScript-Paketmanager im Vergleich: Npm vs. Yarn vs. Pnpm JavaScript-Paketmanager im Vergleich: Npm vs. Yarn vs. Pnpm Aug 09, 2022 pm 04:22 PM

    Dieser Artikel führt Sie durch die drei JavaScript-Paketmanager (npm, Yarn, Pnpm), vergleicht diese drei Paketmanager und spricht über die Unterschiede und Beziehungen zwischen npm, Yarn und Pnpm. Ich hoffe, dass er für alle hilfreich ist Hilfe, wenn Sie Fragen haben, weisen Sie diese bitte darauf hin!

    Was tun, wenn ein NPM-React-Installationsfehler auftritt? Was tun, wenn ein NPM-React-Installationsfehler auftritt? Dec 27, 2022 am 11:25 AM

    Lösung für den npm-react-Installationsfehler: 1. Öffnen Sie die Datei „package.json“ im Projekt und suchen Sie das Abhängigkeitsobjekt. 2. Verschieben Sie „react.json“ nach „devDependencies“. 3. Führen Sie „npm audit“ im Terminal aus. Produktion“, um die Warnung zu beheben.

    Tipp zum Teilen: Besorgen Sie sich elegant die Datei package.json Tipp zum Teilen: Besorgen Sie sich elegant die Datei package.json Oct 09, 2022 pm 07:07 PM

    In der täglichen Entwicklung wissen wir alle, dass package.json eine Beschreibung eines Projekts oder Modulpakets ist, das viele Metainformationen enthält. Wie sollten wir also package.json lesen, um die darin enthaltenen Informationen zu erhalten? Was heute ins Spiel kommt, ist unser Protagonist - read-pkg. Der Schlüsselquellcode umfasst nur etwa 30 Zeilen. Schauen wir uns als Nächstes die Implementierung genauer an, die als Grundlage für die spätere Entwicklung unseres eigenen Toolkits angesehen werden kann !

    Ein Artikel, der package.json und package-lock.json analysiert Ein Artikel, der package.json und package-lock.json analysiert Sep 01, 2022 pm 08:02 PM

    Dieser Artikel gibt Ihnen eine detaillierte Erklärung der Dateien package.json und package-lock.json. Ich hoffe, er wird Ihnen hilfreich sein!

    Was soll ich tun, wenn der Knoten den Befehl npm nicht verwenden kann? Was soll ich tun, wenn der Knoten den Befehl npm nicht verwenden kann? Feb 08, 2023 am 10:09 AM

    Der Grund, warum der Knoten den Befehl npm nicht verwenden kann, liegt darin, dass die Umgebungsvariablen nicht richtig konfiguriert sind. Die Lösung ist: 1. Öffnen Sie „Systemeigenschaften“ 2. Suchen Sie nach „Umgebungsvariablen“ -> „Systemvariablen“ und bearbeiten Sie dann die Umgebung Variablen; 3. Suchen Sie den Speicherort des NodeJS-Ordners. 4. Klicken Sie auf „OK“.

    Was tun, wenn npm node gyp ausfällt? Was tun, wenn npm node gyp ausfällt? Dec 29, 2022 pm 02:42 PM

    npm node gyp schlägt fehl, weil „node-gyp.js“ nicht mit der Version von „Node.js“ übereinstimmt. Die Lösung ist: 1. Löschen Sie den Knotencache über „npm cache clean -f“ 2. Über „npm install -“ g n“ Installieren Sie das n-Modul. 3. Installieren Sie die Version „node v12.21.0“ über den Befehl „n v12.21.0“.

    Lassen Sie uns über die NPM-Konfiguration inländischer Spiegel (Taobao-Spiegel) sprechen. Lassen Sie uns über die NPM-Konfiguration inländischer Spiegel (Taobao-Spiegel) sprechen. Aug 09, 2022 pm 12:06 PM

    npm ist das Paketverwaltungstool für die Bibliothek node.js. Da sich die Spiegeladresse im Ausland befindet, ist die Installation der Bibliothek langsam. Sie können die Spiegeladresse in eine inländische Adresse (Taobao-Spiegel) ändern Bibliothek.

    Dieser Artikel hilft Ihnen, die Prinzipien von npm zu verstehen Dieser Artikel hilft Ihnen, die Prinzipien von npm zu verstehen Aug 09, 2022 am 09:23 AM

    npm ist das Paketverwaltungstool der JavaScript-Welt und das Standardpaketverwaltungstool für die Node.js-Plattform. Über npm können Sie Code installieren, freigeben, verteilen und Projektabhängigkeiten verwalten. Dieser Artikel wird Ihnen helfen, die Prinzipien von npm zu verstehen. Ich hoffe, er wird Ihnen hilfreich sein!

    See all articles