Skip to content
/ upver Public

NPM module to update the version string in a list of files

License

Notifications You must be signed in to change notification settings

uglow/upver

Repository files navigation

upver

Updates the version string within a list of files with a new version string, and git adds the changed files.

This module can be used with corp-semantic-release or plain NPM to update the version number in a list of files when the package's version number is changed. See Usage

NPM Version semantic-release Coverage Status Dependencies status Dev-dependencies status Commitizen friendly

Install

  1. npm install upver
  2. Create a YAML configuration file with this format (and note the <@VERSION@> placeholder for the new version string):
- file: path/to/file/relative/to/project/root.yml
  search: Regex search for, e.g.: '"version": (".+")'
  replacement: The tet to replace the search string. E.g. '"version": "<@VERSION@>"'
- file: ...
  search: ...
  replacement: ...
  1. Configure package.json to point to the location of the above configuration file:
  "config": {
    "upver": "path/to/upver/config.file.yml"
  }

Usage

This module gets the version number as an argument to the module, or from package.json.

There are three ways you could use upver:

Option 1 - Use with an NPM hook You can use NPM's built-in `(pre|post)version` [script-hook](https://docs.npmjs.com/cli/version) to run code before/just-after/after the version in `package.json` has been changed.

The files that are changed are git added in preparation for the changes being committed by npm version in subsequent steps.

In the following example, upver does NOT receive the version as an argument but queries package.json to get the bumped version.

"scripts": {
  "version": "upver"
}
Option 2 - Use with `corp-semantic-release` `corp-semantic-release` provides a `--pre-commit ` option. `upver` is passed the version number as an argument to the script.

The files that are changed are git added in preparation for the changes being committed corp-semantic-release in subsequent steps.

Both of the following examples are equivalent:

"scripts": {
  "corp-release": "corp-semantic-release --pre-commit updateFiles",
  "updateFiles": "upver"
}
"scripts": {
  "corp-release": "corp-semantic-release",
  "version": "upver"
}
Option 3 - Use with `semantic-release` The [semantic-release](https://github.com/semantic-release/semantic-release) package provides hooks to allow `upver` to be called after `package.json` has been updated.

NOTE: semantic-release does not commit file changes to git, but rather publishes the changes to NPM, then uploads a ZIP file to GitHub. This means that the files versioned by upver will only contain the correct version when you install the module (not in git or on your file-system). That's just how the semantic-release tool works.

Example:

"scripts": {
  "semantic-release": "semantic-release pre && upver && npm publish && semantic-release post"
}

Testing

Assuming the following NPM script:

"scripts": {
  "updateFiles": "upver"
}

... use the following command to test that everything works:

npm run updateFiles -- 1.2.3

Note that 1.2.3 can be any version number string that matches this regular expression: /^\d+\.\d+\.\d+.*$. This means foo and 1.2.non-digit is invalid, but 13312321.2312323.24323434-awsome-tag-name is valid.

Contributing

See CONTRIBUTING.md.

License

This software is licensed under the MIT Licence. See LICENSE.