• Stars
    star
    268
  • Rank 147,318 (Top 3 %)
  • Language
    F#
  • License
    MIT License
  • Created about 7 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

F# Template for creating and publishing libraries targeting .NET 6.0 `net6.0` or console apps .NET 6.0 `net6.0`.

MiniScaffold

What is MiniScaffold?

This is an F# Template for:

  • creating and publishing libraries targeting .NET 6.0 net6.0
  • creating and publishing applications targeting .NET 6.0 net6.0

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/CD 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

For Libraries

For Applications

  • Basic argument parsing example via Argu
  • Builds a net6.0 application - Target Frameworks
    • To build for net6.0
  • 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 install "MiniScaffold::*"

Then choose:

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

The scaffold defaults to using the main branch for releases. If you release from a different branch, you can use the --releaseBranch <branch name> parameter to use your release branch instead of the default.


Builds

GitHub Actions
GitHub Actions
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. (#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:

More Repositories

1

IcedTasks

F# Cold Tasks and Cancellable Tasks
F#
105
star
2

RxSandbox

C#
72
star
3

Marten.FSharp

A set of FSharp wrappers around Marten
F#
69
star
4

FSharp.Control.WebSockets

FSharp.Control.WebSockets wraps dotnet WebSockets in FSharp friendly functions and has a ThreadSafe version.
F#
63
star
5

FsLibLog

FsLibLog is a single file you can copy paste or add through Paket Github dependencies to provide your F# library with a logging abstraction. This is a port of the C# LibLog.
F#
53
star
6

dotnet-mono

dotnet utility to run .net full apps using mono on OSX/Linux
F#
51
star
7

dotnet-drama

F#
31
star
8

dotnet-web-benchmarks

Benchmarks of popular .net web frameworks
Lua
22
star
9

Fable.Template.Library

F# Template for create and publishing Fable Libraries
F#
20
star
10

FableInLegacyApps

JavaScript
20
star
11

paket-lock-diff

This is a tool to analyze two paket.lock files showing additions, removals, upgrades and downgrades.
F#
17
star
12

FsOpenTelemetry

FsOpenTelemetry is a single file you can copy paste or add through Paket Github dependencies to provide your F# library with safe helpers for Activity and ActivitySource.
F#
16
star
13

FSharp.Control.Redis.Streams

Interop library between Redis Streams and popular dotnet streaming libraries
F#
13
star
14

TypeSafeInternals

Uses Myriad to generate type safe reflection calls to internal functions/properties/methods.
F#
13
star
15

Hopac.Websockets

Threadsafe Hopac wrapper around Websockets
F#
7
star
16

Giraffe.Hopac

F#
6
star
17

uhura

Lua
6
star
18

docker-canopy

Using F# Canopy in Docker image
F#
6
star
19

FSharp.TPLDataflow

F#
5
star
20

MEL.Flex

FSharp Logging EXtensions for Microsoft.Extensions.Logging
F#
5
star
21

FableWithIdentityServer

F#
4
star
22

MetroPass

C#
4
star
23

StreamOfDreams

F#
3
star
24

DisposableExamples

F#
3
star
25

fantasy

JavaScript
3
star
26

LogaryTools

F#
3
star
27

ReactiveOperators

Extensions to the beloved Reactive Extensions.
PowerShell
3
star
28

FSharp.Analyzers

F#
2
star
29

BenchmarkDotNet.Template

BenchmarkDotNet.Template
F#
2
star
30

miniscaffold-slides

http://www.jimmybyrd.me/miniscaffold-slides/index.html#/
F#
2
star
31

Fsharp-DI-Bridge

F#
2
star
32

litterbox

Similar functionality as dotnet-dump but available via F# Interactive instead. formerly fsi-dotnet-dump-analyzer
F#
2
star
33

mkbundle-example

F#
1
star
34

ThePaperWallDownloaded

Downloads the latest ThePaperWall.com themes
C#
1
star
35

Chessie.Hopac

Combines the best of Hopac and Chessie to create a JobTrial
F#
1
star
36

2014-M3Conf-ReactiveUI

C#
1
star
37

keto-recipes

Keto recipes I make from time to time
1
star
38

ReactiveExtensionsDemo

C#
1
star
39

Hopac-The-Other-Async

F#
1
star