小規模なリリースを行ってタグを付ける前に、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 patch
=)
私の古い答え
git
には元々pre-release
フックがありません。少なくとも、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
を実行するpath/to/pre-release.sh 0.4
を使用できます。スクリプトでpackage.json
を編集し、タグを作成してサーバーにプッシュできます。
これは私が私のプロジェクトで通常行うことです:
npm version patch
git add *;
git commit -m "Commit message"
git Push
npm publish
最初の行npm version patch
は、package.json
でパッチバージョンを1(x.x.1からx.x.2)増やします。次に、その時点で変更された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"
どちらが:
...テストを実行します...
package.json
を次のマイナーバージョンに変更します(例:1.8.1から1.9.0)
変更をプッシュする
新しいgitタグリリースを作成し、
npmパッケージを公開します。
--force
は、誰がボスであるかを示すことです!冗談はさておき https://github.com/npm/npm/issues/862
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 を使用しています:
"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>
この質問で得た答えに明確さを加えたいと思います。
問題に適切に取り組み、解決策を提供している答えがいくつかあると考えても、それは正しいものではありません。この質問に対する正しい答えは、npm version
を使用することです
Package.jsonファイルを自動的に編集する方法はありますか?
はい、これを実現するためにできることは、必要なときにnpm version
コマンドを実行することです。詳細についてはこちらをご覧ください ここではnpmバージョン ですが、基本的な使用法はnpm version patch
そして、package.json
バージョンに3桁目を追加します(1.0。X)
Gitプレリリースフックを使用すると役立ちますか?
必要に応じて、プレリリースフックで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)
まず、バージョン番号をアップグレードするためのルールを理解する必要があります。 セマンティックバージョン の詳細については、こちらをご覧ください。
各バージョンには、以下に示すように異なる目的で定義されたx.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
Gitリポジトリで実行すると、デフォルトのgit-tag-versionがtrueになります。実行したくない場合は、スクリプトに以下のコマンドを追加できます。
--no-git-tag-version
例:"npm --no-git-tag-version version major && ng build --prod"