web-dev-qa-db-ja.com

package.jsonバージョンを自動的に更新する

小規模なリリースを行ってタグを付ける前に、package.jsonを更新してプログラムの新しいバージョンを反映させたいと思います。

ファイルpackage.jsonを自動的に編集する方法はありますか?

git pre-release hookヘルプを使用しますか?

145
tUrG0n

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

とにかくうなり声を使用している場合、それは最も簡単なソリューションかもしれません。

78
zemirco

正解

そのためには、単にnpm version patch =)

私の古い答え

gitには元々pre-releaseフックがありません。少なくとも、man githooksは表示しません。

たとえば、git-extrahttps://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を編集し、タグを作成してサーバーにプッシュできます。

135
gustavotkg

これは私が私のプロジェクトで通常行うことです:

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 commitgit Push、最後にnpm publishを使用してモジュールを公開します。

これが理にかなっていることを願っています...

メルク。

59
Merc

より最新のアプローチを提供する。

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. package.jsonを次のマイナーバージョンに変更します(例:1.8.1から1.9.0)

  3. 変更をプッシュする

  4. 新しいgitタグリリースを作成し、

  5. npmパッケージを公開します。

--forceは、誰がボスであるかを示すことです!冗談はさておき https://github.com/npm/npm/issues/862

23
Jonatas Walker

npm versionの追加として、バージョンバンプが必要でタグや新規コミットが必要ない場合は、--no-git-tag-versionフラグを使用できます。

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

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

18
Tieme

糸を使用している場合は、使用できます

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と入力して実行するだけです

10
Eric Kim

ハスキー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>
3
Anima-t3d

この質問で得た答えに明確さを加えたいと思います。

問題に適切に取り組み、解決策を提供している答えがいくつかあると考えても、それは正しいものではありません。この質問に対する正しい答えは、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が正しい答えである理由は次のとおりです:

  1. ユーザーがpackage.jsonを持つフォルダー構造を使用している場合は、npmを使用している場合はnpmを使用しています。_npm scriptsにアクセスできます。
  2. 彼がnpm scriptsにアクセスできる場合、npm versionコマンドにアクセスできます。
  3. このコマンドを使用すると、コンピューターまたはCD/CIパイプにこれ以上何もインストールする必要がなくなり、長期的にはプロジェクトの保守性を軽減し、セットアップに役立ちます。

他のツールが提案されている他の答えは間違っています。

gulp-bumpは機能しますが、長期的に問題を引き起こす可能性のある別の追加パッケージが必要です(回答のポイント3)

grunt-bumpは機能しますが、長期的に問題を引き起こす可能性のある別の追加パッケージが必要です(回答のポイント3)

3
Alejandro Vales

まず、バージョン番号をアップグレードするためのルールを理解する必要があります。 セマンティックバージョン の詳細については、こちらをご覧ください。

各バージョンには、以下に示すように異なる目的で定義されたx.y.zバージョンがあります。

  1. x-メジャー、大きな変更があり、変更の大きな不一致が発生した場合にこれをアップします。
  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

Gitリポジトリで実行すると、デフォルトのgit-tag-versionがtrueになります。実行したくない場合は、スクリプトに以下のコマンドを追加できます。

--no-git-tag-version

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

1
Mnemo