목차
npm 버전 번호 정의
package.json怎么识别依赖版本
不要太相信npm包的版本号!
dependencies、devDependencies与peerDependencies
dependencies
종속성
devDependencies
peerDependencies
웹 프론트엔드 JS 튜토리얼 종속 패키지의 버전 관리를 위해 package.json을 사용하는 방법에 대해 이야기해 보겠습니다.

종속 패키지의 버전 관리를 위해 package.json을 사용하는 방법에 대해 이야기해 보겠습니다.

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

이 글에서는 package.json을 사용하여 실제 프런트엔드 프로젝트에서 종속 패키지의 버전 관리를 수행하는 방법에 대해 설명합니다. 다양한 규칙은 종속성 관리에 어떤 영향을 미치나요?

종속 패키지의 버전 관리를 위해 package.json을 사용하는 방법에 대해 이야기해 보겠습니다.

npm 버전 번호 정의

버전 형식: 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": "*",
로그인 후 복사
  • 符号^:锁定主版本,可更新次版本号、修正版本号和先行版本号

    例如"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:安装最新的稳定版本

종속 패키지의 버전 관리를 위해 package.json을 사용하는 방법에 대해 이야기해 보겠습니다.

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

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

종속 패키지의 버전 관리를 위해 package.json을 사용하는 방법에 대해 이야기해 보겠습니다.

  • 例如"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"
로그인 후 복사

扩展阅读: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"
}
로그인 후 복사

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

  • X: 주요 버전 번호
  • Y: 부 버전 번호
  • Z: 개정된 버전 번호
  • 문자열: 고급 버전 번호 또는 버전 컴파일 정보
🎜예: 🎜🎜6.3.2-alpha의 의미: 🎜
  • 🎜기본 버전 번호 6, 이전 버전과 호환되지 않는 업데이트 반복이 6개 있습니다. . 🎜
  • 🎜버전 3에는 3개의 작은 함수 반복이 있습니다. 6.*.*
  • 🎜2개의 버그 수정 또는 기타 주요 기능 변경이 포함된 버전 2가 개정되었습니다. 6.*.*
  • 🎜고급 버전 번호 alpha는 실험적인 처리 단계를 나타냅니다. 🎜
🎜추가 자료: Semantics Version 2.0.0🎜

package.json에서 종속성 버전을 식별하는 방법🎜🎜은 다음 코드에 따라 설명됩니다. 🎜
"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"
}
로그인 후 복사
로그인 후 복사

  • 🎜기호 ^: 기본 버전을 잠그고 부 버전 번호, 수정된 버전 번호 및 고급 버전 번호를 업데이트할 수 있습니다.🎜🎜예: "vue-class- component": "^6.0.0", 종속성을 설치할 때 기본 버전이라면 6.*.*를 준수하는 모든 버전을 설치할 수 있습니다. 숫자는 6입니다. 🎜
  • 🎜기호 ~: 주 버전 번호와 부 버전 번호를 잠그고 수정된 버전 번호와 고급 버전 번호를 업데이트합니다.🎜🎜예를 들어 "vue": "~2.5.22", 종속성 설치 시 2.5.*를 준수하는 모든 버전을 설치할 수 있습니다. 🎜
  • 🎜빈 기호: 모든 버전 번호 잠금🎜🎜예: "vue-router": "3.0.1" code > 버전이 3.0.1인 종속 패키지만 설치할 수 있습니다. 🎜
  • 🎜Symbol*: 특정 버전 번호 범위 정의🎜🎜예: vue-router": "3.0.*" code>, 3.0.1, 3.0.2 🎜
  • 3.0으로 수정된 모든 버전을 설치할 수 있습니다. li>🎜. 최신: 최신 안정 버전 설치🎜🎜종속 패키지의 버전 관리를 위해 package.json을 사용하는 방법에 대해 이야기해 보겠습니다.🎜
    • 🎜예: "express": "latest ", 4.18.1(최신 버전 2022.06.13)을 설치할 수 있습니다. 🎜
    • 🎜*: 설치 최신 출시 버전, 반드시 최신 버전일 필요는 없습니다.🎜
    🎜종속 패키지의 버전 관리를 위해 package.json을 사용하는 방법에 대해 이야기해 보겠습니다.🎜
    • 🎜예: "mongoose": "*" 6.0.0-rc2, 3.9.7 등을 설치하세요. 🎜
    • 🎜Git URL: 게시된 패키지를 사용하세요. Git 🎜🎜인용 형식: <protocol>: //[<user>[:<password>]@]<hostname>[:<port>][:][/]<path> #semver:&lt ;semver>]</path></port></hostname></password></user></protocol>🎜
    {
      "name": "tea-latte",
      "version": "1.3.5",
      "peerDependencies": {
        "tea": "2.x"
      }
    }
    로그인 후 복사
    로그인 후 복사
    🎜추가 읽기: npm 문서 - 종속성🎜

    npm 패키지의 버전 번호를 너무 신뢰하지 마세요! 🎜🎜제목 그대로 혈액수업을 통해 얻은 경험입니다. 🎜🎜작성자가 system.js를 사용할 때 사용되는 버전 제한은 system.js: "^6.3.2"입니다. 🎜🎜종속성을 설치할 때 > 6.3.2 버전이 실수로 설치되어 프로젝트가 제대로 실행되지 않았습니다. 🎜🎜이유는 system.js 작성자가 semver 사양에 따라 버전 번호를 지정하지 않아 이전 버전과 호환되지 않는 버전이 도입되었기 때문입니다. 내 프로젝트에 > 업데이트하면 프로젝트가 잘못 실행됩니다. 🎜

    종속성, devDependency 및 PeerDependency🎜

    종속성

    🎜프로덕션 환경에서 사용되는 종속성은 종속성 아래에 균일하게 설치됩니다. 🎜🎜예: 🎜rrreee🎜위 코드는 작성자가 만든 cli 툴킷의 package.json 조각입니다. 🎜shelljs는 파일을 작동하는 데 사용됩니다. 명령문이 devDependency로 변경되면 사용자가 현재 도구 패키지를 설치한 후 오류가 보고됩니다. 🎜devDependency 필드에 선언된 종속성은 npm 설치 도구 패키지 시 설치되지 않기 때문입니다. 설치하기 전에 종속성 필드에서 선언해야 합니다. 🎜

    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"
    }
    로그인 후 복사
    로그인 후 복사

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

    peerDependencies

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

    举个例子:

    {
      "name": "tea-latte",
      "version": "1.3.5",
      "peerDependencies": {
        "tea": "2.x"
      }
    }
    로그인 후 복사
    로그인 후 복사

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

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

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

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

    위 내용은 종속 패키지의 버전 관리를 위해 package.json을 사용하는 방법에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

    핫 AI 도구

    Undresser.AI Undress

    Undresser.AI Undress

    사실적인 누드 사진을 만들기 위한 AI 기반 앱

    AI Clothes Remover

    AI Clothes Remover

    사진에서 옷을 제거하는 온라인 AI 도구입니다.

    Undress AI Tool

    Undress AI Tool

    무료로 이미지를 벗다

    Clothoff.io

    Clothoff.io

    AI 옷 제거제

    Video Face Swap

    Video Face Swap

    완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

    뜨거운 도구

    메모장++7.3.1

    메모장++7.3.1

    사용하기 쉬운 무료 코드 편집기

    SublimeText3 중국어 버전

    SublimeText3 중국어 버전

    중국어 버전, 사용하기 매우 쉽습니다.

    스튜디오 13.0.1 보내기

    스튜디오 13.0.1 보내기

    강력한 PHP 통합 개발 환경

    드림위버 CS6

    드림위버 CS6

    시각적 웹 개발 도구

    SublimeText3 Mac 버전

    SublimeText3 Mac 버전

    신 수준의 코드 편집 소프트웨어(SublimeText3)

    JavaScript 패키지 관리자 비교: Npm vs Yarn vs Pnpm JavaScript 패키지 관리자 비교: Npm vs Yarn vs Pnpm Aug 09, 2022 pm 04:22 PM

    이 기사에서는 세 가지 JavaScript 패키지 관리자(npm, Yarn, pnpm)를 소개하고, 이 세 가지 패키지 관리자를 비교하고, npm, Yarn 및 pnpm 간의 차이점과 관계에 대해 설명합니다. 모두에게 도움이 되기를 바랍니다. 도와주세요. 질문이 있으면 지적해 주세요!

    npm React 설치 시 오류가 발생하면 어떻게 해야 하나요? npm React 설치 시 오류가 발생하면 어떻게 해야 하나요? Dec 27, 2022 am 11:25 AM

    npm 반응 설치 오류에 대한 해결 방법: 1. 프로젝트에서 "package.json" 파일을 열고 종속성 개체를 찾습니다. 2. "react.json"을 "devDependency"로 이동합니다. 3. 터미널에서 "npm audit"를 실행합니다. 생산'을 통해 경고를 수정합니다.

    팁 공유: package.json 파일을 우아하게 얻기 팁 공유: package.json 파일을 우아하게 얻기 Oct 09, 2022 pm 07:07 PM

    일상적인 개발에서 우리는 package.json이 많은 메타 정보를 포함하는 프로젝트 또는 모듈 패키지에 대한 설명이라는 것을 알고 있습니다. 그렇다면 내부 정보를 얻으려면 package.json을 어떻게 읽어야 할까요? 오늘 등장할 것은 우리의 주인공인 read-pkg입니다. 핵심 소스 코드는 약 30줄에 불과합니다. 다음으로, 자체 툴킷의 후속 개발을 위한 기반을 마련하는 것으로 간주될 수 있는 구현을 자세히 살펴보겠습니다. !

    package.json 및 package-lock.json을 분석한 기사 package.json 및 package-lock.json을 분석한 기사 Sep 01, 2022 pm 08:02 PM

    이번 글에서는 package.json과 package-lock.json 파일에 대해 자세히 설명하겠습니다. 도움이 되셨으면 좋겠습니다!

    노드가 npm 명령을 사용할 수 없으면 어떻게 해야 합니까? 노드가 npm 명령을 사용할 수 없으면 어떻게 해야 합니까? Feb 08, 2023 am 10:09 AM

    노드가 npm 명령을 사용할 수 없는 이유는 환경 변수가 올바르게 구성되지 않았기 때문입니다. 해결 방법은 다음과 같습니다. 1. "시스템 속성"을 엽니다. 2. "환경 변수" -> "시스템 변수"를 찾은 다음 환경을 편집합니다. 3. nodejs 폴더의 위치를 ​​찾습니다. 4. "확인"을 클릭합니다.

    npm node gyp가 실패하는 경우 수행할 작업 npm node gyp가 실패하는 경우 수행할 작업 Dec 29, 2022 pm 02:42 PM

    "node-gyp.js"와 "Node.js"의 버전이 일치하지 않아 npm node gyp가 실패했습니다. 해결 방법: 1. "npm 캐시 clean -f"를 통해 노드 캐시를 지웁니다. 2. "npm install - g n" n 모듈을 설치합니다. 3. "n v12.21.0" 명령을 통해 "node v12.21.0" 버전을 설치합니다.

    국내 미러(타오바오 미러)의 npm 구성에 대해 이야기해보겠습니다. 국내 미러(타오바오 미러)의 npm 구성에 대해 이야기해보겠습니다. Aug 09, 2022 pm 12:06 PM

    npm은 node.js 라이브러리용 패키지 관리 도구입니다. 미러 주소가 해외이므로 라이브러리 설치가 느려질 수 있습니다. 미러 주소를 국내 주소(타오바오 미러)로 변경하면 설치 속도가 빨라집니다. 도서관.

    이 글은 npm의 원리를 이해하는 데 도움이 될 것입니다. 이 글은 npm의 원리를 이해하는 데 도움이 될 것입니다. Aug 09, 2022 am 09:23 AM

    npm은 JavaScript 세계의 패키지 관리 도구이자 Node.js 플랫폼의 기본 패키지 관리 도구입니다. npm을 통해 코드를 설치, 공유, 배포하고 프로젝트 종속성을 관리할 수 있습니다. 이 글은 여러분에게 npm의 원칙을 안내할 것입니다. 여러분에게 도움이 되기를 바랍니다!

    See all articles