Dm.Web.BuildStatic 1.0.3

dotnet tool install --global Dm.Web.BuildStatic --version 1.0.3
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local Dm.Web.BuildStatic --version 1.0.3
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=Dm.Web.BuildStatic&version=1.0.3
                    
nuke :add-package Dm.Web.BuildStatic --version 1.0.3
                    

🛠️ .NET Pre-build tool for static resources

Install

Install as a .NET tool:

dotnet tool install --global Dm.Web.BuildStatic

Usage

CLI:

Dm.Web.BuildStatic [config.json]

# OR

Dm.Web.BuildStatic # Uses dm.web.build.static.json config by default

Pre-build step:

<Target Name="BuildStatic" BeforeTargets="PreBuildEvent">
	

	
	<Exec Command="Dm.Web.BuildStatic" />

	
	<Exec Command="Dm.Web.BuildStatic PreBuild/config.json" />
</Target>

Config format

{
	"use": {
		"list":  "Dm.Web.BuildStatic.Services.Stages.FilesSource+Builder",
		"each":  "Dm.Web.BuildStatic.Services.Stages.ForEach+Builder",
		"copy":  "Dm.Web.BuildStatic.Services.Stages.FileCopy+Builder",
		"minjs": "Dm.Web.BuildStatic.Services.Stages.MinifyJS+Builder",
		"gzip":  "Dm.Web.BuildStatic.Services.Stages.GzipStream+Builder",
		"sprite":"Dm.Web.BuildStatic.Services.Stages.SVGSprite+Builder"
	},
	"pipelines": [
		{
			"list":  "TestStatic/js/**/*.js",
			"each":  "string",
			"copy":  "{path}.gz",
			"minjs": null,
			"gzip":  "Optimal"
		},
		{
			"list": "TestStatic/css/*.css",
			"each": "string",
			"copy": "{path}.gz",
			"gzip": null
		},
		{
			"list":  "TestStatic/move-to-js.txt",
			"each":  "string",
			"copy":  "TestStatic/js/moved.js.gz",
			"minjs": null,
			"gzip":  null
		},
        {
            "list":   "TestStatic/img/oauth2-icons/*.svg",
			"sprite": "TestStatic/img/oauth2-icons.svg.gz",
			"gzip":   null
        }
	]
}

The configuration has two main sections:

  1. use: Defines available steps in format: "step_name": "BuilderClassName"
  2. pipelines: Defines pipelines and their steps in format: "step_name": <config_data>|null

Built-in Pipeline Stages

  1. Dm.Web.BuildStatic.Services.Stages.FilesSource - enumerates files in a folder. Requires a "folder+pattern" parameter (e.g., "js/*.js" for all JS files in the js folder, "js/**/*.js" for JS files in the js folder and its subfolders).
  2. Dm.Web.BuildStatic.Services.Stages.ForEach - executes subsequent stages for each element in a collection. Requires a "type-of-element" parameter (e.g., "string").
  3. Dm.Web.BuildStatic.Services.Stages.FileCopy - copies a file from src (provided by the previous stage) to dst (required parameter).
  4. Dm.Web.BuildStatic.Services.Stages.MinifyJS - minifies a JS file using Uglify. Accepts an InOutStreams model with source JS and outputs InOutStreams with minified JS in InOutStreams.In. If this is the final stage, saves the minified content to InOutStreams.Out.
  5. Dm.Web.BuildStatic.Services.Stages.GzipStream - compresses the incoming InOutStreams.In stream to InOutStreams.Out using GZIP.
  6. Dm.Web.BuildStatic.Services.Stages.SVGSprite - combines an incoming collection of SVG symbol files into a sprite. Requires a dst parameter (output destination).
Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
1.0.3 244 11/24/2025
1.0.2 209 10/13/2025
1.0.1 217 10/8/2025
1.0.0 209 10/8/2025