Skip to content

Version management for Mobile Apps. Simple tool to set version for Native, React Native, Cordova, Xamarin and more.

License

Notifications You must be signed in to change notification settings

dwmkerr/app-version

Repository files navigation

app-version

npm version CircleCI AppVeyor Build Status codecov dependencies Status devDependencies Status GuardRails badge Greenkeeper badge Conventional Commits

Version management for mobile apps. Allows version numbers to be controlled for Native, React Native, Corvoda, Xamarin and more. Ideal for CI/CD.

Introduction

This simple tool allows you to set the version for an app consistently across multiple projects. It is ideal for CI/CD and build scenarios.

As an example, the script below sets the version for an iOS and Android app in a React Native project to the version specified in the package.json file:

npx app-version set-version $(cat package.json | jq .version -r)

You can also use the module directly in node:

import appVersion from 'app-version';

await appVersion.setVersion({ version: '0.1.2' });l

Installation

Install with:

npm install -g app-version

Usage

Here's a quick reference:

Set Version

To set the application version, run:

app-version set-version 0.1.2

iOS

Updates the Info.plist file:

	<key>CFBundleShortVersionString</key>
	<string>0.1.2</string>

Android

Updates the app/build.gradle file:

android {
    defaultConfig {
        versionName "0.1.2"
    }
}

Developer Guide

The only dependencies are Node LTS (or above).

Useful commands for development are:

Command Usage
npm test Runs the unit tests.
npm run debug Run a command in a debugger, e.g. npm run debug show-versions.
npm run test:debug Runs the tests in a debugger. Combine with .only and debugger for ease of debugging.
npm run cov Runs the tests, writing coverage reports to ./artifacts/coverage.

Currently the linting style is based on airbnb. Run npm run lint to lint the code.

Initial Setup

Install the dependencies (I recommend Node Version Manager):

nvm install --lts
nvm use --lts
git clone git@github.com:dwmkerr/app-version.git
cd app-version
npm install && npm test

Running Tests

Run the tests with:

npm test

Tests are executed with Mocha and coverage is handled by Istanbul. Coverage reports are written to an ./artifacts folder.

Note that best practices are to pass Mocha a quoted string with a glob pattern for cross-platform execution of tests (see Mocha Docs). However for some reason on AppVeyor this doesn't seem to work. Leaving the pattern unquoted works for cmd as well as the shell in builds for now. So please be careful if changing the quotes and test on both platforms.

Debugging

You can use the npm run debug command to quickly debug the code:

npm run debug show-versions

Commit Messages

Conventional Commits should be used. This allows the CHANGELOG to be kept up to date automatically, and ensures that semantic versioning can be expected from the library.

Creating a Release

To create a release.

  • Merge your work to master.
  • Use npm run release.
  • Push and deploy git push --tags && git push && npm publish

Note that semantic-version is used, meaning a changelog is automatically kept up to date, and versioning is handled semantically based on the commit message.

Builds

Builds are run on CircleCI. You can run the CircleCI build locally with the following command:

make circleci

Debugging

The debug package is used to support low-level debugging. If you want to see debug messages when running the tool, just set the DEBUG environment variable to app-version:

DEBUG=app-version app-version set-version --platforms android

About

Version management for Mobile Apps. Simple tool to set version for Native, React Native, Cordova, Xamarin and more.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published