업데이트 패키지.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-release
https://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"
다음 중 무엇입니까?
테스트 실행...
▁your▁change기를
package.json
다음 부 ~ 으로 합니다.변경 사항 적용
새 Git 태그 릴리스를 생성하고
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 버전이 있습니다.
- x - major, 주요 변경 사항이 있을 때 이 값을 올리면 변경 사항의 큰 불일치가 발생합니다.
- y - 마이너, 새 기능이나 향상된 기능이 있을 때 이 값을 적용합니다.
- 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
정답은 다음과 같습니다.
- 있는 폴더
package.json
그는 사용하고 있습니다.npm
그가 사용하고 있다면npm
는 는그접수있다니습할근▁the▁to다에 접근할 수 .npm scripts
. - 가 액스권있경우에 접근할 수 ,
npm scripts
는 는그접수있다니습할근▁the▁to다에 접근할 수 .npm version
지휘권 - 이 명령을 사용하면 컴퓨터나 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를 실행합니다.
- 첫 번째 스크립트는 부 버전과 태그를 피하는 옵션으로 npm 버전을 실행합니다.
- 버전 스크립트는 기본 명령 다음에 필요한 명령을 실행합니다(나의 경우 에코만).
- 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)}'
기능:
- sed를 사용하여 패키지 이름 읽기
- npm 보기 버전이 포함된 최신 게시 버전을 요청합니다.
- 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
'source' 카테고리의 다른 글
div에서 텍스트를 수직으로 정렬하려면 어떻게 해야 합니까? (0) | 2023.05.26 |
---|---|
각도 2를 사용한 HTML5 이벤트 처리(포커스 및 포커스 아웃) (0) | 2023.05.26 |
PostgreSQL: 일련 번호 대 ID (0) | 2023.05.21 |
mongodb는 왜 안돼요? (0) | 2023.05.21 |
Azure 웹 사이트에서 오류 세부 정보를 가져오는 방법 (0) | 2023.05.21 |