バージョンいちいち上げるの面倒
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.json
のversion
を書き換え
という感じです
scripts
"prepackage": "node versionCounter.js",
"package": "pnpm prepackage && xxx"
使い方
pnpm package
とやると、 versionCounter.js
によってバージョンが書き換えられビルドされます。
煩わしいバージョン管理とオサラバ。