https://github.com/uglow/upver
NPM module to update the version string in a list of files
https://github.com/uglow/upver
javascript npm version-control versioning
Last synced: 2 months ago
JSON representation
NPM module to update the version string in a list of files
- Host: GitHub
- URL: https://github.com/uglow/upver
- Owner: uglow
- License: other
- Created: 2017-02-28T05:35:24.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-09-28T00:12:14.000Z (almost 9 years ago)
- Last Synced: 2025-10-29T08:34:28.736Z (8 months ago)
- Topics: javascript, npm, version-control, versioning
- Language: JavaScript
- Size: 17.6 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# upver
> 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](https://github.com/leonardoanalista/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](#usage)
[](http://npm.im/upver)
[](https://github.com/semantic-release/semantic-release)
[](https://coveralls.io/github/uglow/upver?branch=master)
[](https://david-dm.org/uglow/upver#info=dependencies)
[](https://david-dm.org/uglow/upver#info=devDependencies)
[](http://commitizen.github.io/cz-cli/)
## Install
1. `npm install upver`
2. Create a YAML configuration file with this format (and note the `<@VERSION@>` placeholder for the *new* version string):
```yaml
- 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: ...
```
3. 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 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.
```json
"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:
```json
"scripts": {
"corp-release": "corp-semantic-release --pre-commit updateFiles",
"updateFiles": "upver"
}
```
```json
"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:
```json
"scripts": {
"semantic-release": "semantic-release pre && upver && npm publish && semantic-release post"
}
```
## Testing
Assuming the following NPM script:
```bash
"scripts": {
"updateFiles": "upver"
}
```
... use the following command to test that everything works:
```bash
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](CONTRIBUTING.md).
## License
This software is licensed under the MIT Licence. See [LICENSE](LICENSE).