Skip to content

Instantly share code, notes, and snippets.

@Nkzn
Created April 16, 2019 13:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Nkzn/287c867baf5bcf387296a949d23e06c4 to your computer and use it in GitHub Desktop.
Save Nkzn/287c867baf5bcf387296a949d23e06c4 to your computer and use it in GitHub Desktop.
Expoアプリのリリース時にversionCodeとbuildNumberを更新するやつ。package.jsonと同じディレクトリに置いておきます。
var packagejson = require(__dirname + "/package.json");
interface Package {
name: string;
versionName: string;
versionNameWithoutBuild: string;
versions: number[];
versionCode: number;
}
const versionNameWithoutBuild: string = packagejson.version.replace(/-build\.?\d+/, "");
const versions: number[] = packagejson.version.match(/\d+/g);
export default {
name: packagejson.name,
versionName: packagejson.version,
versionNameWithoutBuild,
versions,
versionCode: Number(versions[0]) * 1000000 + Number(versions[1]) * 10000 + Number(versions[2]) * 100 + Number(versions[3]),
} as Package;
/**
* package.jsonのバージョンをapp.jsonのversionCodeとbuildNumberに配布するやつ
* package.jsonに`"version": "1.2.3-build.3"`みたいに書いておくと、
* ```
* "version": "1.2.3",
* "versionCode": 1020303,
* "buildNumber": "1020303",
* ```
* のようにapp.jsonが書き換えられます。
*
* 使い方
* $ ts-node update_version.ts
*/
import fs from "fs";
import packagejs from "./package";
const appJsonPath = __dirname + "/app.json";
const t = fs.readFileSync(appJsonPath, "utf-8");
const out = t
.replace(/"version": "\d+\.\d+(\.\d+)?(-build\.\d+)?"/, `"version": "${packagejs.versionNameWithoutBuild}"`)
.replace(/"versionCode": \d+/, `"versionCode": ${packagejs.versionCode}`)
.replace(/"buildNumber": "\d+"/, `"buildNumber": "${packagejs.versionCode}"`);
fs.writeFileSync(appJsonPath, out);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment