LayerZero.Tools.Web
1.0.0
See the version list below for details.
dotnet add package LayerZero.Tools.Web --version 1.0.0
NuGet\Install-Package LayerZero.Tools.Web -Version 1.0.0
<PackageReference Include="LayerZero.Tools.Web" Version="1.0.0" />
<PackageVersion Include="LayerZero.Tools.Web" Version="1.0.0" />
<PackageReference Include="LayerZero.Tools.Web" />
paket add LayerZero.Tools.Web --version 1.0.0
#r "nuget: LayerZero.Tools.Web, 1.0.0"
#:package LayerZero.Tools.Web@1.0.0
#addin nuget:?package=LayerZero.Tools.Web&version=1.0.0
#tool nuget:?package=LayerZero.Tools.Web&version=1.0.0
📦 Dynamic Bundle Loader for ASP.NET Core
A convention-based asset bundling system for .NET 8+ using WebOptimizer. Automatically discovers and injects CSS/JS bundles per controller and action using Razor TagHelpers.
🔍 Purpose
Eliminates manual asset management in Razor views by scanning controller/action folder structures and auto-generating optimized bundles at runtime.
🗂 Folder Convention
wwwroot/
├── js/
│ └── controller/
│ ├── Home/
│ │ ├── Common.js
│ │ ├── Layout.js
│ │ └── Index/
│ │ └── Page.js
│ └── Dashboard/
│ └── overview.js
└── css/
└── controller/
├── Home/
│ ├── index.css
│ └── shared.css
└── Dashboard/
└── overview.css
Controller/Action
structure drives bundle discovery.
⚙️ Installation
- Create and reference the library project
dotnet new classlib -n LayerZero.Tools.Web
Add the reference in your web app:
dotnet add reference ../LayerZero.Tools.Web.csproj
- NuGet Dependencies
<PackageReference Include="LigerShark.WebOptimizer.Core" Version="3.0.456" />
<FrameworkReference Include="Microsoft.AspNetCore.App" />
🚀 Usage
Register bundles in Program.cs
builder.Services.AddSingleton(DynamicBundleMapper.Bundles);
builder.Services.AddWebOptimizer(pipeline =>
{
DynamicBundleMapper.Register(pipeline);
});
Middleware setup
Ensure the WebOptimizer middleware is added:
app.UseWebOptimizer();
Custom asset folder paths
If you use a custom structure:
builder.Services.AddWebOptimizer(pipeline =>
{
DynamicBundleMapper.Register(pipeline, JsRoot: "assets/js", CssRoot: "assets/styles");
});
Make sure the paths are relative to wwwroot/
. Absolute paths or incorrect base folders will result in missing bundles.
⚠️ CSS Path Warning
When using relative URLs in CSS (e.g. url('../images/icon.svg')
), remember:
Bundles are served from /bundles/...
Asset references like images or fonts must resolve correctly from the bundle's URL, not the source folder.
Fix: Use root-relative paths (/images/icon.svg
) or ensure your build pipeline rewrites paths.
🧠 TagHelpers
Add to _ViewImports.cshtml
@addTagHelper *, LayerZero.Tools.Web
In _Layout.cshtml
<head>
<style-bundle-loader />
</head>
<body>
@RenderBody()
<script-bundle-loader />
</body>
Action-specific bundles override controller-wide ones (loaded after).
📦 Features
✅ Convention-over-configuration
✅ Minification via WebOptimizer
✅ Controller & action bundle granularity
✅ TagHelpers for clean layout injection
✅ Auto-registers bundles at startup
✅ Supports custom asset folder paths
✨ Example
Requesting /Home/Index
loads:
<link rel="stylesheet" href="/bundles/home.min.css" />
<script src="/bundles/home.min.js"></script>
<script src="/bundles/home/index.min.js"></script>
🔮 Roadmap (optional additions)
Asset versioning (?v=hash)
Inline critical CSS
TagHelper preload hints
Razor directives for explicit override
👤 Author
RuneForgePrime Team – Built for clean architecture and developer clarity.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. 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. |
-
net8.0
- LigerShark.WebOptimizer.Core (>= 3.0.436)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.