小さなリリースをしてタグを付ける前に、package.jsonを更新して、プログラムの新しいバージョンを反映させたいと思います。
ファイルをpackage.json自動的に編集する方法はありますか?
git pre-release hookヘルプを使用しますか?
小さなリリースをしてタグを付ける前に、package.jsonを更新して、プログラムの新しいバージョンを反映させたいと思います。
ファイルをpackage.json自動的に編集する方法はありますか?
git pre-release hookヘルプを使用しますか?
回答:
npm versionおそらく正しい答えです。代替案を提供するために、私はgrunt-bumpをお勧めします。これは、angular.jsのメンバーの1人が管理しています。
使用法:
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ですか?
npm --no-git-tag-version version patch。
正しい答え
これを行うには、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コマンドによって行われます。
の拡張機能を使用していない場合はgit、シェルスクリプトを記述して(名前を付けますgit-release.sh)、git release次のようにエイリアスを付けることができます。
git config --global alias.release '!sh path/to/pre-release.sh $1'
git release 0.4それよりも、whichを実行して使用できpath/to/pre-release.sh 0.4ます。スクリプトはを編集package.jsonしてタグを作成し、サーバーにプッシュできます。
git releaseそれに応じてpackage.jsonを更新しません... github.com/visionmedia/git-extras/issues/150:D
.git/hooks/pre-release.sh含むものを作成するだけです。echo -e "{\n\"version\": "$1"\n}" > package.json使用してみてくださいgit release $version
これは私のプロジェクトで通常行うことです。
npm version patch
git add *;
git commit -m "Commit message"
git push
npm publish
最初の行は、npm version patchでパッチバージョンを1だけ増やします(xx1からxx2)package.json。次に、すべてのファイルを追加します(package.jsonその時点で変更されたファイルを含む)。その後、通常のgit commitとgit push、最終的にはnpm publish、モジュールを公開します。
これが理にかなっているといいのですが...
Merc。
npm version patch、コミット自体は行います。ただし、タグをgithubにプッシュするには、も必要だと思いますgit push --tags。
npm version patchバージョン番号を
npm version patch私には何もしません。
npm version。私が実行しているのとまったく同じフォルダーからコミットします。
より最新のアプローチを提供するため。
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"
どちらになります:
...テストを実行...
package.json次のマイナーバージョンに変更します(例:1.8.1から1.9.0)。
変更をプッシュする
新しいgitタグリリースを作成し、
npmパッケージを公開します。
--force上司が誰であるかを示すことです!冗談はさておきhttps://github.com/npm/npm/issues/8620を参照
"deploy-minor": "npm version minor --force -m \"version %s\""ます。覚えておく必要があるのはnpm run deploy-minor:)
それに加えて、バージョンバンプが必要でタグが不要な場合、または新しいコミットが必要な場合npm versionは、--no-git-tag-versionフラグを使用できます。
npm --no-git-tag-version version patch
糸を使用している場合は使用できます
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"
入力するだけで実行できます yarn release-it
私はハスキーとgit-branch-isを使用しています:
ハスキー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バージョンの詳細を読む
WebpackまたはVue.js
webpackまたはVue.jsを使用している場合は、自動挿入バージョン-Webpackプラグインを使用して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>
postmerge、現在は構成post-merge内にありhusky: {hooks:{}}ます。どのような問題がありますgit-branch-isか?
この質問で得られた回答に明確さを加えたいと思います。
ここで問題に適切に取り組み、解決策を提供しているいくつかの回答があると思っても、それらは正しいものではありません。この質問への正しい答えは使用することですnpm version
package.jsonファイルを自動的に編集する方法はありますか?
はい、あなたは何ができるか、これが起こる実行するようにするためにnpm version、あなたがより多くのそれについて読むことができ、必要なときにコマンドをここNPMバージョンが、ベースの使用量は次のようになりnpm version patch、それはあなたの上3桁目の順序を追加しpackage.jsonたバージョン(1.0。X)
git pre-releaseフックを使用すると便利ですか?
npm version必要に応じて、プレリリースフックでコマンドを実行するように構成できますが、それがCD / CIパイプで必要かどうかによって異なりますが、npm versionコマンドがないと、git pre-releaseフックは「簡単に」何もできません。とともにpackage.json
npm version正解である理由は次のとおりです。
package.json彼が使用しているnpm彼が使用している場合npm、彼はへのアクセス権を持っていますnpm scripts。npm scriptsアクセスできますnpm version。他のツールが提案されている他の答えは正しくありません。
gulp-bump 機能しますが、長期的に問題を引き起こす可能性のある別の追加パッケージが必要です(私の回答のポイント3)
grunt-bump 機能しますが、長期的に問題を引き起こす可能性のある別の追加パッケージが必要です(私の回答のポイント3)
まず、バージョン番号をアップグレードするためのルールを理解する必要があります。セマンティックバージョンの詳細については、こちらをご覧ください。
各バージョンには、以下に示すように異なる目的で定義されたxyzバージョンがあります。
スクリプトを実行するには、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
git repoで実行すると、デフォルトのgit-tag-versionがtrueになり、実行したくない場合は、スクリプトに以下のコマンドを追加できます。
--no-git-tag-version
たとえば: "npm --no-git-tag-version version major && ng build --prod"
変更タイプと呼ばれる、コミットメッセージのタグに基づいてセマンティックバージョニングを自動化できるツールを作成しました。これは、セマンティックバージョニング仕様とともに、Angular Commit Message Conventionに厳密に従っています。
このツールを使用すると、npm CLIを使用してpackage.jsonのバージョンを自動的に変更できます(これについては、こちらで説明します)。
さらに、これらのコミットから変更ログを作成でき、変更タイプに基づいてコミットを作成するためのメニュー(コミットメッセージのスペルチェッカー付き)もあります。私はそれをチェックアウトし、それで達成できるすべてを確認するためにドキュメントを読むことを強くお勧めします。
セマンティックバージョニングを自動化するCICDパイプラインのニーズに適したものが見つからなかったため、ツールを作成しました。私はむしろバージョンがどうあるべきかというより実際の変更が何であるかに焦点を当てたいと思います、そしてそれは私のツールがその日を節約する場所です。