Updates the version string within a list of files with a new version string, and
git add
s 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 install upver
- 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: ...
- Configure
package.json
to point to the location of the above configuration file:
"config": {
"upver": "path/to/upver/config.file.yml"
}
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 add
ed 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 add
ed 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"
}
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.
See CONTRIBUTING.md.
This software is licensed under the MIT Licence. See LICENSE.