Skip to content

F# Template for creating and publishing libraries targeting .NET Full (net461) and Core (netstandard2.1) or console apps .NET Core (netcoreapp3.1)

License

Notifications You must be signed in to change notification settings

ids-pfinn/MiniScaffold

 
 

Repository files navigation

MiniScaffold

What is MiniScaffold?

This is an F# Template for:

  • creating and publishing libraries targeting .NET Full net461 and Core netstandard2.1
  • creating and publishing applications targeting .NET Core netcoreapp3.1

Why use MiniScaffold

This takes away the ambiguity that developers face when creating an OSS project. Such as:

  • How do I structure my project?
  • How do I create repeatable builds?
  • Which test framework should I use?
  • How do I create releases easily?
  • What Issue/Pull Request templates should I use?
  • How should I go about creating documentation?
  • How do I get CI setup easily?
  • What's the standard .gitignore file?
  • What other things would make it easier for me when starting off creating a project I might not even know about?

What does this include in the box?

All project types

  • Basic argument parsing example via Argu
  • Builds a netcoreapp3.1 application - Target Frameworks
  • Builds for win-x64, osx-x64 and linux-x64 - Runtime Identifiers. Bundles the application via dotnet-packaging
    • Bundles the win-x64 application in a .zip file.
    • Bundles the osx-x64 application in a .tar.gz file.
    • Bundles the linux-x64 application in a .tar.gz file.

Getting started quickly

Install the dotnet template from NuGet:

dotnet new -i "MiniScaffold::*"

Then choose:

dotnet new mini-scaffold -n MyCoolNewLib --githubUsername MyGithubUsername
dotnet new mini-scaffold -n MyCoolNewApp --githubUsername MyGithubUsername -ou console

Builds

macOS/Linux Windows
Travis Badge Build status
Build History Build History

NuGet

Stable Prerelease
NuGet Badge NuGet Badge

Options

githubUserName

This is used to automatically configure author information in the NuGet package, as well as configure push urls for repo locations.

outputType

Defaults to Library

When set to either Console or Library project and the supporting infrastructure around their respective types.


Known issues

Permission denied

-bash: ./build.sh: Permission denied

This is because dotnet template loses permissions of files. (TheAngryByrd#37) added a post hook to address this but this only fixes it for dotnet sdk 2.x users. dotnet sdk 1.x will need to run chmod +x ./build.sh

Appveyor badge not scaffolded correctly

Appveyor's conventions around generating URLs based on the project name has some nuances. See this issue for details.


Example Projects using this template:

This project uses the following projects:

About

F# Template for creating and publishing libraries targeting .NET Full (net461) and Core (netstandard2.1) or console apps .NET Core (netcoreapp3.1)

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • F# 90.7%
  • CSS 5.6%
  • JavaScript 3.2%
  • Other 0.5%