source

업데이트 패키지.json 버전 자동으로

manycodes 2023. 5. 21. 11:41
반응형

업데이트 패키지.json 버전 자동으로

작은 릴리스를 수행하고 태그를 지정하기 전에 패키지를 업데이트하고 싶습니다.json은 프로그램의 새 버전을 반영합니다.

을 편집할 수 ?package.json 자동으로?

사용하시겠습니까?git pre-release hook도와드릴까요?

정답

그러기 위해서는 그냥npm version patch=)

나의 예전 대답

.pre-release원래는 …에 걸었습니다.git . . . . . . . . . .man githooks표시되지 않습니다.

를 사용하는 git-extra(예를 들어, https://github.com/visionmedia/git-extras), 을 사용할 수 있습니다.pre-releasehttps://github.com/visionmedia/git-extras/blob/master/bin/git-release 에서 볼 수 있는 것처럼 이를 통해 구현되는 후크.필요한 것은 오직.git/hook/pre-release.sh당신의 용를편는실파를 .package.json파일. 커밋, 푸시 및 태그 지정은 다음과 같이 수행됩니다.git release지휘권

확사장않경는우지용하을간음에▁for에 확장자를 git셸 스크립트를 작성할 수 있습니다(이름을 지정합니다).git-release.sh및에을 지정할 수 .git release다음과 같은 것으로:

git config --global alias.release '!sh path/to/pre-release.sh $1'

할수있니다습사용을 수 .git release 0.4는 그은실것입다니될을 실행할 입니다.path/to/pre-release.sh 0.4스크립트를 편집할 수 있습니다.package.json태그를 만들고 서버에 밀어넣습니다.

npm version아마 정답일 겁니다.다른 대안을 제시하기 위해 저는 그르렁-범프를 추천합니다.angular.js의 남자들 중 한 명에 의해 유지됩니다.

용도:

grunt bump
>> Version bumped to 0.0.2

grunt bump:patch
>> Version bumped to 0.0.3

grunt bump:minor
>> Version bumped to 0.1.0

grunt bump
>> Version bumped to 0.1.1

grunt bump:major
>> Version bumped to 1.0.0

어쨌든 그룬트를 사용한다면 가장 간단한 해결책이 될 수 있습니다.

이것이 제가 보통 하는 프로젝트입니다.

npm version patch
git add *;
git commit -m "Commit message"
git push
npm publish

번째 줄, 첫번째줄은줄.npm version patch 에패 버전 1(x.x.1서 x.x.2로)에서 이 1에서 x로) 합니다.package.json 그다음모파추일다가니합을든을 포함한 파일을 합니다.package.json그 시점에서 수정되었습니다.인 그면평소에러.git commit그리고.git push그리고 마지막으로npm publish모듈을 게시합니다.

이게 말이 되기를...

메르.

보다 최신의 접근 방식을 제공합니다.

package.json

  "scripts": {
    "eslint": "eslint index.js",
    "pretest": "npm install",
    "test": "npm run eslint",
    "preversion": "npm run test",
    "version": "",
    "postversion": "git push && git push --tags && npm publish"
  }

그런 다음 실행합니다.

npm version minor --force -m "Some message to commit"

다음 중 무엇입니까?

  1. 테스트 실행...

  2. ▁your▁change기를package.json다음 부 ~ 으로 합니다.

  3. 변경 사항 적용

  4. 새 Git 태그 릴리스를 생성하고

  5. npm 패키지를 게시합니다.

--force누가 보스인지 보여주는 것입니다!농담은 차치하고 https://github.com/npm/npm/issues/8620 을 참조하십시오.

npm version은 수있다니습사를 할 수 .--no-git-tag-version버전 범프를 원하지만 태그나 새 커밋이 없는 경우 플래그를 지정합니다.

npm --no-git-tag-version version patch

https://docs.npmjs.com/cli/version

만약 당신이 실을 사용한다면 당신은 사용할 수 있습니다.

yarn version patch

이것은 증가할 것입니다.package.json 치별전(0.0.x)합니다.v0.0.0

마찬가지로 다음을 사용하여 부 버전 또는 부 버전을 범핑할 수 있습니다.--minor또는--major

는 git로 .--follow-tags

git push --follow-tags

해당 스크립트를 생성할 수도 있습니다.

    "release-it": "yarn version --patch && git push --follow-tags"

▁it를 입력하여 만 하면 .yarn release-it

허스키와 깃브랜치를 사용합니다.

허스키 v1+ 기준:

// package.json
{
  "husky": {
    "hooks": {
      "post-merge": "(git-branch-is master && npm version minor || 
  (git-branch-is dev && npm --no-git-tag-version version patch)",
    }
  }
}

허스키 V1 이전 버전:

"scripts": {
  ...
  "postmerge": "(git-branch-is master && npm version minor || 
  (git-branch-is dev && npm --no-git-tag-version version patch)",
  ...
},

npm 버전에 대해 자세히 알아보기

웹 팩 또는 Vue.js

웹 팩 또는 Vue.js를 사용하는 경우 자동 주입 버전 - 웹 플러그인을 사용하여 UI에 이를 표시할 수 있습니다.

NUXT

nuxt.config.js:

var WebpackAutoInject = require('webpack-auto-inject-version');

module.exports = {
  build: {
    plugins: [
      new WebpackAutoInject({
        // options
        // example:
        components: {
          InjectAsComment: false
        },
      }),
    ]
  },
}

의 용자내 에.template예를 들어 바닥글:

<p> All rights reserved © 2018 [v[AIV]{version}[/AIV]]</p>

먼저 버전 번호 업그레이드 규칙을 이해해야 합니다.시맨틱 버전에 대한 자세한 내용은 여기를 참조하십시오.

각 버전에는 아래와 같이 다른 목적으로 정의되는 x.y.z 버전이 있습니다.

  1. x - major, 주요 변경 사항이 있을 때 이 값을 올리면 변경 사항의 큰 불일치가 발생합니다.
  2. y - 마이너, 새 기능이나 향상된 기능이 있을 때 이 값을 적용합니다.
  3. z - 패치, 이전 버전에서 버그를 수정하거나 변경 사항을 되돌리는 경우 이를 적용합니다.

스크립트를 실행하려면 package.json에서 스크립트를 정의합니다.

"script": {
    "buildmajor": "npm version major && ng build --prod",
    "buildminor": "npm version minor && ng build --prod",
    "buildpatch": "npm version patch && ng build --prod"
}

터미널에서는 다음과 같이 필요에 따라 npm을 실행하면 됩니다.

npm run buildpatch

gitrepo에서 실행하는 경우 기본 git-tag-version은 true이고 실행하지 않으려면 다음 명령을 스크립트에 추가할 수 있습니다.

--no-git-tag-version

예:"npm --no-git-tag-version version major && ng build --prod"

저는 이 질문이 받은 답변에 명확성을 더하고 싶습니다.

여기에 문제를 제대로 해결하고 해결책을 제공하는 몇 가지 답이 있다고 해도, 그것들은 올바른 답이 아닙니다.은 이질에대정다같습다니음과답은한문을 사용하는 것입니다.npm version

파일 패키지를 편집할 수 있는 방법이 있습니까?json 자동으로?

예, 이를 실현하기 위해 할 수 있는 것은 다음을 실행하는 것입니다.npm version명령이 필요할 때, 당신은 여기 npm 버전에서 그것에 대해 더 읽을 수 있지만, 기본적인 사용은.npm version patch그리고 그것은 당신의 세 번째 자리 순서를 추가할 것입니다.package.json버전(1.0.X)

깃 프리릴리스 후크를 사용하는 것이 도움이 됩니까?

할 수 .npm version필요에 따라 사전 릴리스 후크에 대한 명령을 실행합니다. 하지만 이는 CD/CI 파이프에 필요한 명령인지 여부에 따라 다릅니다.npm version 를지다하를 하다.git pre-release후크는 그와 함께 아무것도 할 수 없습니다.package.json

이유npm version정답은 다음과 같습니다.

  1. 있는 폴더 package.json그는 사용하고 있습니다.npm그가 사용하고 있다면npm는 는그접수있다니습할근▁the▁to다에 접근할 수 .npm scripts.
  2. 가 액스권있경우에 접근할 수 ,npm scripts는 는그접수있다니습할근▁the▁to다에 접근할 수 .npm version지휘권
  3. 이 명령을 사용하면 컴퓨터나 CD/CI 파이프에 더 이상 아무것도 설치할 필요가 없습니다. 이는 장기적으로 프로젝트의 유지 관리 작업을 줄이고 설정에 도움이 됩니다.

다른 도구가 제안된 다른 답변은 올바르지 않습니다.

gulp-bump효과가 있지만 장기적으로 문제를 일으킬 수 있는 추가 패키지가 필요합니다(제 답변의 포인트 3).

grunt-bump효과가 있지만 장기적으로 문제를 일으킬 수 있는 추가 패키지가 필요합니다(제 답변의 포인트 3).

당신은 할 수 .version-select패키지:

npm i -D version-select
{
    "name": "test",
    "version": "1.0.0",
    "scripts": {
        "version-select": "version-select"
    },
    "devDependencies": {
        "version-select": "^1.0.13"
    }
}

여기에 이미지 설명 입력

더 읽기

패키지를 , 그것은 npm 패키지입니다.semver 링크

let fs = require('fs');
let semver = require('semver');

if (fs.existsSync('./package.json')) {
    var package = require('./package.json');
    let currentVersion = package.version;
    let type = process.argv[2];
    if (!['major', 'minor', 'patch'].includes(type)) {
        type = 'patch';
    }

    let newVersion = semver.inc(package.version, type);
    package.version = newVersion;
    fs.writeFileSync('./package.json', JSON.stringify(package, null, 2));

    console.log('Version updated', currentVersion, '=>', newVersion);
}

package.json다음과 같이 보여야 합니다.

{
  "name": "versioning",
  "version": "0.0.0",
  "description": "Update version in package.json using npm script",
  "main": "version.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "version": "node version.js"
  },
  "author": "Bhadresh Arya",
  "license": "ISC",
  "dependencies": {
    "semver": "^7.3.2"
  }
}

지나가다major,minor,patch이 인수npm run version은 본값은 입다니입니다.patch.

예:npm run version또는npm run verison patch또는npm run verison minor또는npm run version major

깃 레포

허스키와 함께:

{
  "name": "demo-project",
  "version": "0.0.3",
  "husky": {
    "hooks": {
      "pre-commit": "npm --no-git-tag-version version patch && git add ."
    }
  }
}

저는 변경 유형으로 알려진 커밋 메시지의 태그를 기반으로 자동 시맨틱 버전 관리를 수행할 수 있는 도구를 만들었습니다.이것은 의미론적 버전 지정 사양과 함께 각도 커밋 메시지 규칙을 밀접하게 따릅니다.

이 도구를 사용하여 패키지의 버전을 자동으로 변경할 수 있습니다.npm CLI를 사용하는 json(여기서 설명함).

또한 이러한 커밋에서 변경 로그를 만들 수 있으며 변경 유형을 기준으로 커밋을 만들기 위한 메뉴(커밋 메시지에 대한 맞춤법 검사기 포함)도 있습니다.저는 그것을 확인하고 그것으로 달성할 수 있는 모든 것을 보기 위해 문서를 읽는 것을 강력히 추천합니다.

CICD Pipeline에서 시맨틱 버전 관리를 자동화하는 데 필요한 요구 사항을 찾을 수 없었기 때문에 이 툴을 작성했습니다.저는 버전이 무엇이어야 하는지보다는 실제 변경 사항에 초점을 맞추고 싶습니다. 이 점이 바로 제 툴이 하루를 절약하는 방법입니다.

도구의 이론적 근거에 대한 자세한 내용은 여기를 참조하십시오.

오래된 질문인 것은 알지만, 이 방법이 두 개의 패키지를 자동으로 업데이트하려는 경우 누군가에게 도움이 되기를 바랍니다.동일한 버전을 사용하기 위해 다른 위치에 있는 json.

먼저 다음 행을 주 package.json 스크립트 섹션에 추가합니다.

"new-version": "npm version --git-tag-version=false",
"version": "echo 'starting postversion script'",
"postversion": "LAST_VERSION=$(npm pkg get version | sed 's/\"//g') && echo $LAST_VERSION && cd projects/ngx-timeline && sed -i.bak \"s/\\\"version\\\": \\\"[0-9]\\.[0-9]\\.[0-9]\\\"/\\\"version\\\": \\\"$LAST_VERSION\\\"/g\" package.json && rm package.json.bak && git commit -am \"Release $LAST_VERSION\" && git tag v$LAST_VERSION"

그런 다음 인스턴스 npm run new-version minor를 실행합니다.

  1. 첫 번째 스크립트는 부 버전과 태그를 피하는 옵션으로 npm 버전을 실행합니다.
  2. 버전 스크립트는 기본 명령 다음에 필요한 명령을 실행합니다(나의 경우 에코만).
  3. SED를 사용한 사후 버전 스크립트에서 하위 패키지의 버전을 재정의할 수 있습니다.json, commit(기본적으로 하나의 commit을 이미 생성한 버전 스크립트)을 수정한 다음 태그를 만듭니다.

내 빌드 및 게시 스크립트는 git에 액세스할 수 없는 도커 이미지에서 실행되므로 저장소를 수정하지 않고 자동 증분 버전을 게시할 수 있는 접근 방식을 원했습니다.그래서 스크립트를 미리 게시하기 위해 다음을 추가했습니다.

npm view `sed -nr 's/"name": "([^"]+).*/\1/p' package.json` version | awk -F'.' '{ cmd = "npm version v" $1 "." $2 "." $3+1 " --force --no-git-tag-version"; system(cmd)}'

기능:

  1. sed를 사용하여 패키지 이름 읽기
  2. npm 보기 버전이 포함된 최신 게시 버전을 요청합니다.
  3. npm version --force --no-git-tag-version을 호출합니다. 버전은 (2)에서 가져왔고 하나 증가했습니다.

그것을 개선하는 방법들이 있지만, 적어도 그것은 효과가 있고 보편적입니다.

이.package.json . ▁has. 실의 매우 합니다.실의 기능은 매우 유사합니다.

"postversion": "git add package.json && git commit -m $npm_package_version && git tag $npm_package_version HEAD && git push --tags"

필드를 하고 버전필업새고커만듭다로 새 .package.json버전 이름을 사용하여 커밋하고 태그를 지정한 후 분기로 푸시합니다.

그러면 그럼, 그도쳐요망을 실행하면 .npm version patch|npm version minor|npm version major태그가 포함된 버전의 커밋을 만듭니다.

노드를 확인하십시오.AutoVersionPush 매크로 스크립트입니다.Visual Studio Code API를 사용하여 새 버전을 자동 설정한 다음 키보드 단축키로 커밋하고 푸시하는 매크로입니다.

새 버전은 현재 날짜와 총 커밋을 기준으로 합니다.그러나 기호나 다른 언어에 맞게 코드를 쉽게 조정할 수 있습니다.

언급URL : https://stackoverflow.com/questions/13059991/update-package-json-version-automatically

반응형