JSPM

  • Created
  • Published
  • Downloads 33130
  • Score
    100M100P100Q139083F
  • License MIT

Version your React Native app in a `npm version` fashion.

Package Exports

  • react-native-version

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-native-version) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

react-native-version Build Status npm npm

Seamlessly shadows the behaviour of npm version.

npm-scripts hook (automatic method)

Setup

$ npm install react-native-version --save-dev
# or
$ yarn add react-native-version --dev

Hook into the "version" or "postversion" npm script in your app's package.json:

{
    "name": "AwesomeProject",
    "version": "0.0.1",
    "private": true,
    "scripts": {
        "start": "node node_modules/react-native/local-cli/cli.js start",
+		"postversion": "react-native-version"
    },
    // ...
}

Usage

Before you publish a new build of your app, run npm version <newversion>.

react-native-version will then update your android/ and ios/ code. Depending on the script and options you choose, it can also automatically amend the version bump commit and update the Git tag created by npm version. This method should be useful in most cases. If you need more control, take a look at the CLI and options below.

CLI

Setup

$ npm install -g react-native-version
# or
$ yarn global add react-native-version

Example usage

$ cd AwesomeProject/
$ npm version patch
$ react-native-version

Options

-h, --help                output usage information
-V, --version             output the version number
-a, --amend               Amend the previous commit. Also updates the latest Git tag to point to the amended commit. This is done automatically when react-native-version is run from the "version" or "postversion" npm script. Use "--never-amend" if you never want to amend.
--skip-tag                For use with "--amend", if you don't want to update Git tags.
-A, --never-amend         Never amend the previous commit.
-b, --increment-build     Only increment build number.
-d, --android [path]      Path to your "android/app/build.gradle" file.
-i, --ios [path]          Path to your "ios/" folder.
-L, --legacy              Version iOS using agvtool (macOS only). Requires Xcode Command Line Tools.
-q, --quiet               Be quiet, only report errors.
-r, --reset-build         Reset build number back to "1" (iOS only). Unlike Android's "versionCode", iOS doesn't require you to bump the "CFBundleVersion", as long as "CFBundleShortVersionString" changes. To make it consistent across platforms, react-native-version bumps both by default. You can use this option if you prefer to keep the build number value at "1" after every version change. If you then need to push another build under the same version, you can use "-bt ios" to increment.
-t, --target <platforms>  Only version specified platforms, eg. "--target android,ios".

You can apply these options to the "version" or "postversion" script too. If for example you want to commit the changes made by RNV yourself, add the "--never-amend" option:

{
    // ...
    "scripts": {
        "postversion": "react-native-version --never-amend"
    },
    // ...
}

Targeting platforms

The default behaviour is to version all React Native platforms. You can target specific platforms by passing a comma-separated list to the "--target" option, or by using the RNV environment variable:

$ RNV=android,ios npm version patch
# or
$ RNV=android,ios react-native-version

When using the CLI, you can even combine both methods and make your teammates rage 😈 :suspect::

$ RNV=android react-native-version --target ios

:rage1: 🙊

API

import { version } from 'react-native-version';

async function doSomething() {
    const versionResult = await version({
        amend: true,
        // ...
    });
}

// or

version({
    amend: true,
    // ...
})
.then(commitHash => {
    console.log(commitHash);
})
.catch(err => {
    console.error(err);
});

Functions

getDefaults()Object

Returns default values for some options, namely android/ios file/folder paths

getPlistFilenames(xcode)Array

Returns Info.plist filenames

version(program, projectPath)Promise.<(string|Error)>

Versions your app

Typedefs

Promise

Custom type definition for Promises

getDefaults() ⇒ Object

Returns default values for some options, namely android/ios file/folder paths

Kind: global function
Returns: Object - Defaults

getPlistFilenames(xcode) ⇒ Array

Returns Info.plist filenames

Kind: global function
Returns: Array - Plist filenames

Param Type Description
xcode Xcode Opened Xcode project file

version(program, projectPath) ⇒ Promise.<(string|Error)>

Versions your app

Kind: global function
Returns: Promise.<(string|Error)> - A promise which resolves with the last commit hash

Param Type Description
program Object commander/CLI-style options, camelCased
projectPath string Path to your React Native project

Promise

Custom type definition for Promises

Kind: global typedef
Properties

Name Type Description
result * See the implementing function for the resolve type and description
result Error Rejection error object

See also