1
0

package.jsonのバージョンを自動で更新!Node.jsアプリ開発者のための時短テクニック

Last updated at Posted at 2024-05-21

バージョンいちいち上げるの面倒

Node.js でアプリを作ったときに、いちいちバージョン上げたりするの面倒じゃないですか?
自動アップデートされる場合は、ユーザからしたらバージョンなんて意識しないでしょうしちょっと無駄がある気がして、これを何とかしたい

リリース時に自動でバージョンを上げる

バージョン表記

自動でバージョンを上げるなら、

<西暦>.<月(一桁)>.<カウンタ>

のような表記が良さそうですね。
(最後を <日> にしてしまうと、同日に複数回のリリースができなくなるため不採用)

package.json>version を書き換えるスクリプト

versionCounter.js という名前で以下の内容のスクリプトを作成。

const fs = require('fs');
const path = require('path');

const counterFilePath = path.resolve(__dirname, 'build-counter.txt');
const packageFilePath = path.resolve(__dirname, 'package.json');
const date = new Date();
const year = date.getFullYear();
const month = date.getMonth() + 1; // 0-based なので+1

let counter = 100;

if (fs.existsSync(counterFilePath)) {
  const data = fs.readFileSync(counterFilePath, 'utf8');
  const [savedYear, savedMonth, savedCounter] = data.split('.').map(Number);

  if (savedYear === year && savedMonth === month) {
    counter = savedCounter + 1;
  }
}

fs.writeFileSync(counterFilePath, `${year}.${month}.${counter}`);

// package.jsonのバージョンを更新
const packageJson = JSON.parse(fs.readFileSync(packageFilePath, 'utf8'));
packageJson.version = `${year}.${month}.${counter}`;
fs.writeFileSync(packageFilePath, JSON.stringify(packageJson, null, 2));

console.log(`${year}.${month}.${counter}`);
  • build-counter.txtというファイルにバージョンを書き込み、実行時にカウンターをインクリメント
  • 生成したバージョンを使って package.jsonversion を書き換え
    という感じです

scripts

    "prepackage": "node versionCounter.js",
    "package": "pnpm prepackage && xxx"

使い方

pnpm package とやると、 versionCounter.js によってバージョンが書き換えられビルドされます。
煩わしいバージョン管理とオサラバ。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0