semantic-release-dotnet
Version:
A semantic-release plugin for versioning .NET core projects.
69 lines (46 loc) • 2.49 kB
Markdown
semantic-release-dotnet
=======================
`semantic-release-dotnet` is a [semantic-release](https://semantic-release.gitbook.io/semantic-release/) plugin for setting the varions on .NET projects, in specific `.csproj` and `Directory.Build.props`. It has the ability to create property files if missing or updating existing versions in files that do exist. If an existing file does not have a version property, then one will be added to either the first `<PropertyGroup/>` or by creating a new property group if one is not needed.
This only implements the `prepare` function for semantic-release and does not have functionality for uploading NuGet packages to repositories. This follows the [Single Responsibility Principle](https://en.wikipedia.org/wiki/Single-responsibility_principle), see `semantic-release-nuget` for that.
## Installing
Depending on your package manager, you'll need to run one of the commands.
```
npm install semantic-release-dotnet --only=dev
yarn add semantic-release-dotnet -D
```
Typically this is only used as a development dependency.
## Usage
Add the plugin into the `release.config.js` file or in the appropriate section of `package.json`. An example `release.config.js`:
```
module.exports = {
plugins: [
"@semantic-release/commit-analyzer",
"semantic-release-dotnet",
],
};
```
Options can be given also:
```
module.exports = {
plugins: [
"@semantic-release/commit-analyzer",
[
"semantic-release-dotnet",
{
paths: ["src/**.csproj"],
}
],
],
};
```
## Options
There are only a few options for the command.
### `paths?: string[]`
* Default: `["Directory.Build.props"]`
This is an array of paths that are passed into [glob](https://www.npmjs.com/package/glob) to figure out what files need to be updated. If it is not provided, then a `Directory.Build.props` will be created and updated at the root level of the repository. If a path does not have magic values (so `src/Project A/Project A.csproj` instead of `**/*.csproj`), then the file will be created if missing.
### `indent?: string | number`
* Default: `" "``
This determines the indent of the files updated. If this is zero (`0`) or blank (`""`), then no indention will be done. All files that match the pattern will be rewritten and indented.
### `debug?: boolean`
* Default: `false`
Turns on debugging messages. This defaults to `false` to avoid information overload.