From df26af69fc0371a1e3c9076b213e7a14e5c6243d Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 14 Nov 2019 14:25:11 +0800 Subject: [PATCH 1/3] Add AbpMinifyModule. --- framework/Volo.Abp.sln | 16 ++++++++++- ...Volo.Abp.AspNetCore.Mvc.UI.Bundling.csproj | 1 + .../AbpAspNetCoreMvcUiBundlingModule.cs | 3 +- .../AspNetCore/Mvc/UI/Bundling/BundlerBase.cs | 2 +- .../Mvc/UI/Bundling/Scripts/ScriptBundler.cs | 2 +- .../Mvc/UI/Bundling/Styles/StyleBundler.cs | 2 +- .../Volo.Abp.Minify/Volo.Abp.Minify.csproj | 24 ++++++++++++++++ .../Volo/Abp/Minify/AbpMinifyModule.cs | 8 ++++++ .../Volo/Abp/Minify/Html/IHtmlMinifier.cs | 7 +++++ .../Volo/Abp/Minify}/IMinifier.cs | 2 +- .../Abp/Minify}/NUglify/NUglifyCssMinifier.cs | 4 +-- .../Abp/Minify}/NUglify/NUglifyException.cs | 2 +- .../Abp/Minify/NUglify/NUglifyHtmlMinifier.cs | 13 +++++++++ .../NUglify/NUglifyJavascriptMinifier.cs | 6 ++-- .../Minify}/NUglify/NUglifyMinifierBase.cs | 2 +- .../Minify}/Scripts/IJavascriptMinifier.cs | 2 +- .../Volo/Abp/Minify}/Styles/ICssMinifier.cs | 2 +- .../NUglify/JavascriptMinifier_Tests.cs | 26 ----------------- .../Volo.Abp.Minify.Tests.csproj | 16 +++++++++++ .../Volo/Abp/Minify/AbpMinifyTestModule.cs | 11 ++++++++ .../Abp/Minify/NUglify/CssMinifier_Tests.cs | 28 +++++++++++++++++++ .../Abp/Minify/NUglify/HtmlMinifier_Tests.cs | 27 ++++++++++++++++++ .../NUglify/JavascriptMinifier_Tests.cs | 28 +++++++++++++++++++ 23 files changed, 192 insertions(+), 42 deletions(-) create mode 100644 framework/src/Volo.Abp.Minify/Volo.Abp.Minify.csproj create mode 100644 framework/src/Volo.Abp.Minify/Volo/Abp/Minify/AbpMinifyModule.cs create mode 100644 framework/src/Volo.Abp.Minify/Volo/Abp/Minify/Html/IHtmlMinifier.cs rename framework/src/{Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification => Volo.Abp.Minify/Volo/Abp/Minify}/IMinifier.cs (67%) rename framework/src/{Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification => Volo.Abp.Minify/Volo/Abp/Minify}/NUglify/NUglifyCssMinifier.cs (69%) rename framework/src/{Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification => Volo.Abp.Minify/Volo/Abp/Minify}/NUglify/NUglifyException.cs (91%) create mode 100644 framework/src/Volo.Abp.Minify/Volo/Abp/Minify/NUglify/NUglifyHtmlMinifier.cs rename framework/src/{Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification => Volo.Abp.Minify/Volo/Abp/Minify}/NUglify/NUglifyJavascriptMinifier.cs (60%) rename framework/src/{Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification => Volo.Abp.Minify/Volo/Abp/Minify}/NUglify/NUglifyMinifierBase.cs (94%) rename framework/src/{Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification => Volo.Abp.Minify/Volo/Abp/Minify}/Scripts/IJavascriptMinifier.cs (53%) rename framework/src/{Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification => Volo.Abp.Minify/Volo/Abp/Minify}/Styles/ICssMinifier.cs (51%) delete mode 100644 framework/test/Volo.Abp.AspNetCore.Mvc.UI.Tests/Volo/Abp/AspNetCore/Mvc/UI/Minification/NUglify/JavascriptMinifier_Tests.cs create mode 100644 framework/test/Volo.Abp.Minify.Tests/Volo.Abp.Minify.Tests.csproj create mode 100644 framework/test/Volo.Abp.Minify.Tests/Volo/Abp/Minify/AbpMinifyTestModule.cs create mode 100644 framework/test/Volo.Abp.Minify.Tests/Volo/Abp/Minify/NUglify/CssMinifier_Tests.cs create mode 100644 framework/test/Volo.Abp.Minify.Tests/Volo/Abp/Minify/NUglify/HtmlMinifier_Tests.cs create mode 100644 framework/test/Volo.Abp.Minify.Tests/Volo/Abp/Minify/NUglify/JavascriptMinifier_Tests.cs diff --git a/framework/Volo.Abp.sln b/framework/Volo.Abp.sln index e71b58eba0..088a9437a8 100644 --- a/framework/Volo.Abp.sln +++ b/framework/Volo.Abp.sln @@ -250,7 +250,11 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.MailKit.Tests", "t EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.ObjectMapping.Tests", "test\Volo.Abp.ObjectMapping.Tests\Volo.Abp.ObjectMapping.Tests.csproj", "{667F5544-C1EB-447C-96FD-9B757F04DE2B}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Ddd.Application.Contracts", "src\Volo.Abp.Ddd.Application.Contracts\Volo.Abp.Ddd.Application.Contracts.csproj", "{73559227-EBF0-475F-835B-1FF0CD9132AA}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Abp.Ddd.Application.Contracts", "src\Volo.Abp.Ddd.Application.Contracts\Volo.Abp.Ddd.Application.Contracts.csproj", "{73559227-EBF0-475F-835B-1FF0CD9132AA}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Minify", "src\Volo.Abp.Minify\Volo.Abp.Minify.csproj", "{928DC30D-C078-4BB4-A9F8-FE7252C67DC6}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Abp.Minify.Tests", "test\Volo.Abp.Minify.Tests\Volo.Abp.Minify.Tests.csproj", "{E69182B3-350A-43F5-A935-5EBBEBECEF97}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -750,6 +754,14 @@ Global {73559227-EBF0-475F-835B-1FF0CD9132AA}.Debug|Any CPU.Build.0 = Debug|Any CPU {73559227-EBF0-475F-835B-1FF0CD9132AA}.Release|Any CPU.ActiveCfg = Release|Any CPU {73559227-EBF0-475F-835B-1FF0CD9132AA}.Release|Any CPU.Build.0 = Release|Any CPU + {928DC30D-C078-4BB4-A9F8-FE7252C67DC6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {928DC30D-C078-4BB4-A9F8-FE7252C67DC6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {928DC30D-C078-4BB4-A9F8-FE7252C67DC6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {928DC30D-C078-4BB4-A9F8-FE7252C67DC6}.Release|Any CPU.Build.0 = Release|Any CPU + {E69182B3-350A-43F5-A935-5EBBEBECEF97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E69182B3-350A-43F5-A935-5EBBEBECEF97}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E69182B3-350A-43F5-A935-5EBBEBECEF97}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E69182B3-350A-43F5-A935-5EBBEBECEF97}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -878,6 +890,8 @@ Global {70DD6E17-B98B-4B00-8F38-C489E291BB53} = {447C8A77-E5F0-4538-8687-7383196D04EA} {667F5544-C1EB-447C-96FD-9B757F04DE2B} = {447C8A77-E5F0-4538-8687-7383196D04EA} {73559227-EBF0-475F-835B-1FF0CD9132AA} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} + {928DC30D-C078-4BB4-A9F8-FE7252C67DC6} = {5DF0E140-0513-4D0D-BE2E-3D4D85CD70E6} + {E69182B3-350A-43F5-A935-5EBBEBECEF97} = {447C8A77-E5F0-4538-8687-7383196D04EA} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {BB97ECF4-9A84-433F-A80B-2A3285BDD1D5} diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo.Abp.AspNetCore.Mvc.UI.Bundling.csproj b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo.Abp.AspNetCore.Mvc.UI.Bundling.csproj index 4427b40dd6..04158b461a 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo.Abp.AspNetCore.Mvc.UI.Bundling.csproj +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo.Abp.AspNetCore.Mvc.UI.Bundling.csproj @@ -13,6 +13,7 @@ + diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/AbpAspNetCoreMvcUiBundlingModule.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/AbpAspNetCoreMvcUiBundlingModule.cs index a0f0e65f1e..3a99953f25 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/AbpAspNetCoreMvcUiBundlingModule.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/AbpAspNetCoreMvcUiBundlingModule.cs @@ -1,9 +1,10 @@ using Volo.Abp.AspNetCore.Mvc.UI.Bootstrap; +using Volo.Abp.Minify; using Volo.Abp.Modularity; namespace Volo.Abp.AspNetCore.Mvc.UI.Bundling { - [DependsOn(typeof(AbpAspNetCoreMvcUiBootstrapModule))] + [DependsOn(typeof(AbpAspNetCoreMvcUiBootstrapModule), typeof(AbpMinifyModule))] public class AbpAspNetCoreMvcUiBundlingModule : AbpModule { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/BundlerBase.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/BundlerBase.cs index 8c2258e1eb..115029dbe5 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/BundlerBase.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/BundlerBase.cs @@ -3,9 +3,9 @@ using System.Text; using Microsoft.Extensions.FileProviders; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Abstractions; -using Volo.Abp.AspNetCore.Mvc.UI.Minification; using Volo.Abp.AspNetCore.VirtualFileSystem; using Volo.Abp.DependencyInjection; +using Volo.Abp.Minify; namespace Volo.Abp.AspNetCore.Mvc.UI.Bundling { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/Scripts/ScriptBundler.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/Scripts/ScriptBundler.cs index 7b2887eb90..ec997a5aac 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/Scripts/ScriptBundler.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/Scripts/ScriptBundler.cs @@ -1,6 +1,6 @@ using System; -using Volo.Abp.AspNetCore.Mvc.UI.Minification.Scripts; using Volo.Abp.AspNetCore.VirtualFileSystem; +using Volo.Abp.Minify.Scripts; namespace Volo.Abp.AspNetCore.Mvc.UI.Bundling.Scripts { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/Styles/StyleBundler.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/Styles/StyleBundler.cs index ac33211860..9651e7d5aa 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/Styles/StyleBundler.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Bundling/Styles/StyleBundler.cs @@ -1,8 +1,8 @@ using System; using System.IO; using Microsoft.AspNetCore.Hosting; -using Volo.Abp.AspNetCore.Mvc.UI.Minification.Styles; using Volo.Abp.AspNetCore.VirtualFileSystem; +using Volo.Abp.Minify.Styles; namespace Volo.Abp.AspNetCore.Mvc.UI.Bundling.Styles { diff --git a/framework/src/Volo.Abp.Minify/Volo.Abp.Minify.csproj b/framework/src/Volo.Abp.Minify/Volo.Abp.Minify.csproj new file mode 100644 index 0000000000..6abb3fcc37 --- /dev/null +++ b/framework/src/Volo.Abp.Minify/Volo.Abp.Minify.csproj @@ -0,0 +1,24 @@ + + + + + + netstandard2.0 + Volo.Abp.Minify + Volo.Abp.Minify + $(AssetTargetFallback);portable-net45+win8+wp8+wpa81; + false + false + false + + + + + + + + + + + + \ No newline at end of file diff --git a/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/AbpMinifyModule.cs b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/AbpMinifyModule.cs new file mode 100644 index 0000000000..3670eb5e42 --- /dev/null +++ b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/AbpMinifyModule.cs @@ -0,0 +1,8 @@ +using Volo.Abp.Modularity; + +namespace Volo.Abp.Minify +{ + public class AbpMinifyModule : AbpModule + { + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/Html/IHtmlMinifier.cs b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/Html/IHtmlMinifier.cs new file mode 100644 index 0000000000..f09a378bb9 --- /dev/null +++ b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/Html/IHtmlMinifier.cs @@ -0,0 +1,7 @@ +namespace Volo.Abp.Minify.Html +{ + public interface IHtmlMinifier : IMinifier + { + + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/IMinifier.cs b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/IMinifier.cs similarity index 67% rename from framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/IMinifier.cs rename to framework/src/Volo.Abp.Minify/Volo/Abp/Minify/IMinifier.cs index 8b2390d7bb..6e298d4d82 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/IMinifier.cs +++ b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/IMinifier.cs @@ -1,4 +1,4 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Minification +namespace Volo.Abp.Minify { public interface IMinifier { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/NUglify/NUglifyCssMinifier.cs b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/NUglify/NUglifyCssMinifier.cs similarity index 69% rename from framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/NUglify/NUglifyCssMinifier.cs rename to framework/src/Volo.Abp.Minify/Volo/Abp/Minify/NUglify/NUglifyCssMinifier.cs index e1e0ba4236..a84f8b6e5d 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/NUglify/NUglifyCssMinifier.cs +++ b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/NUglify/NUglifyCssMinifier.cs @@ -1,7 +1,7 @@ using NUglify; -using Volo.Abp.AspNetCore.Mvc.UI.Minification.Styles; +using Volo.Abp.Minify.Styles; -namespace Volo.Abp.AspNetCore.Mvc.UI.Minification.NUglify +namespace Volo.Abp.Minify.NUglify { public class NUglifyCssMinifier : NUglifyMinifierBase, ICssMinifier { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/NUglify/NUglifyException.cs b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/NUglify/NUglifyException.cs similarity index 91% rename from framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/NUglify/NUglifyException.cs rename to framework/src/Volo.Abp.Minify/Volo/Abp/Minify/NUglify/NUglifyException.cs index a5f36340a8..cb24f7812e 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/NUglify/NUglifyException.cs +++ b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/NUglify/NUglifyException.cs @@ -2,7 +2,7 @@ using System.Collections.Generic; using System.Runtime.Serialization; using NUglify; -namespace Volo.Abp.AspNetCore.Mvc.UI.Minification.NUglify +namespace Volo.Abp.Minify.NUglify { public class NUglifyException : AbpException { diff --git a/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/NUglify/NUglifyHtmlMinifier.cs b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/NUglify/NUglifyHtmlMinifier.cs new file mode 100644 index 0000000000..4947644278 --- /dev/null +++ b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/NUglify/NUglifyHtmlMinifier.cs @@ -0,0 +1,13 @@ +using NUglify; +using Volo.Abp.Minify.Html; + +namespace Volo.Abp.Minify.NUglify +{ + public class NUglifyHtmlMinifier : NUglifyMinifierBase, IHtmlMinifier + { + protected override UglifyResult UglifySource(string source, string fileName) + { + return Uglify.Html(source, sourceFileName: fileName); + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/NUglify/NUglifyJavascriptMinifier.cs b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/NUglify/NUglifyJavascriptMinifier.cs similarity index 60% rename from framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/NUglify/NUglifyJavascriptMinifier.cs rename to framework/src/Volo.Abp.Minify/Volo/Abp/Minify/NUglify/NUglifyJavascriptMinifier.cs index 7224acd5a0..8a4a7a9dd4 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/NUglify/NUglifyJavascriptMinifier.cs +++ b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/NUglify/NUglifyJavascriptMinifier.cs @@ -1,9 +1,7 @@ using NUglify; -using NUglify.JavaScript; -using Volo.Abp.AspNetCore.Mvc.UI.Minification.Scripts; -using Volo.Abp.DependencyInjection; +using Volo.Abp.Minify.Scripts; -namespace Volo.Abp.AspNetCore.Mvc.UI.Minification.NUglify +namespace Volo.Abp.Minify.NUglify { public class NUglifyJavascriptMinifier : NUglifyMinifierBase, IJavascriptMinifier { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/NUglify/NUglifyMinifierBase.cs b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/NUglify/NUglifyMinifierBase.cs similarity index 94% rename from framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/NUglify/NUglifyMinifierBase.cs rename to framework/src/Volo.Abp.Minify/Volo/Abp/Minify/NUglify/NUglifyMinifierBase.cs index b6fd576603..6f52e383a6 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/NUglify/NUglifyMinifierBase.cs +++ b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/NUglify/NUglifyMinifierBase.cs @@ -4,7 +4,7 @@ using System.Linq; using NUglify; using Volo.Abp.DependencyInjection; -namespace Volo.Abp.AspNetCore.Mvc.UI.Minification.NUglify +namespace Volo.Abp.Minify.NUglify { public abstract class NUglifyMinifierBase : IMinifier, ITransientDependency { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/Scripts/IJavascriptMinifier.cs b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/Scripts/IJavascriptMinifier.cs similarity index 53% rename from framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/Scripts/IJavascriptMinifier.cs rename to framework/src/Volo.Abp.Minify/Volo/Abp/Minify/Scripts/IJavascriptMinifier.cs index 84dfe9dd4e..319cc3e9ba 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/Scripts/IJavascriptMinifier.cs +++ b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/Scripts/IJavascriptMinifier.cs @@ -1,4 +1,4 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Minification.Scripts +namespace Volo.Abp.Minify.Scripts { public interface IJavascriptMinifier : IMinifier { diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/Styles/ICssMinifier.cs b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/Styles/ICssMinifier.cs similarity index 51% rename from framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/Styles/ICssMinifier.cs rename to framework/src/Volo.Abp.Minify/Volo/Abp/Minify/Styles/ICssMinifier.cs index 42935b7c65..4e231ca0e4 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bundling/Volo/Abp/AspNetCore/Mvc/UI/Minification/Styles/ICssMinifier.cs +++ b/framework/src/Volo.Abp.Minify/Volo/Abp/Minify/Styles/ICssMinifier.cs @@ -1,4 +1,4 @@ -namespace Volo.Abp.AspNetCore.Mvc.UI.Minification.Styles +namespace Volo.Abp.Minify.Styles { public interface ICssMinifier : IMinifier { diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Tests/Volo/Abp/AspNetCore/Mvc/UI/Minification/NUglify/JavascriptMinifier_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Tests/Volo/Abp/AspNetCore/Mvc/UI/Minification/NUglify/JavascriptMinifier_Tests.cs deleted file mode 100644 index ca04a8c929..0000000000 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Tests/Volo/Abp/AspNetCore/Mvc/UI/Minification/NUglify/JavascriptMinifier_Tests.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Shouldly; -using Xunit; - -namespace Volo.Abp.AspNetCore.Mvc.UI.Minification.NUglify -{ - public class NUglifyJavascriptMinifier_Tests : AbpAspNetCoreMvcUiTestBase - { - private readonly NUglifyJavascriptMinifier _nUglifyJavascriptMinifier; - - public NUglifyJavascriptMinifier_Tests() - { - _nUglifyJavascriptMinifier = GetRequiredService(); - } - - [Fact] - public void Should_Minify_Simple_Code() - { - const string source = "var x = 5; var y = 6;"; - - var minified = _nUglifyJavascriptMinifier.Minify(source); - - minified.Length.ShouldBeGreaterThan(0); - minified.Length.ShouldBeLessThan(source.Length); - } - } -} diff --git a/framework/test/Volo.Abp.Minify.Tests/Volo.Abp.Minify.Tests.csproj b/framework/test/Volo.Abp.Minify.Tests/Volo.Abp.Minify.Tests.csproj new file mode 100644 index 0000000000..57a7f4ea01 --- /dev/null +++ b/framework/test/Volo.Abp.Minify.Tests/Volo.Abp.Minify.Tests.csproj @@ -0,0 +1,16 @@ + + + + + + netcoreapp3.0 + + + + + + + + + + \ No newline at end of file diff --git a/framework/test/Volo.Abp.Minify.Tests/Volo/Abp/Minify/AbpMinifyTestModule.cs b/framework/test/Volo.Abp.Minify.Tests/Volo/Abp/Minify/AbpMinifyTestModule.cs new file mode 100644 index 0000000000..625d06c950 --- /dev/null +++ b/framework/test/Volo.Abp.Minify.Tests/Volo/Abp/Minify/AbpMinifyTestModule.cs @@ -0,0 +1,11 @@ +using Volo.Abp.Modularity; + +namespace Volo.Abp.Minify +{ + [DependsOn( + typeof(AbpMinifyModule), + typeof(AbpTestBaseModule))] + public class AbpMinifyTestModule : AbpModule + { + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Minify.Tests/Volo/Abp/Minify/NUglify/CssMinifier_Tests.cs b/framework/test/Volo.Abp.Minify.Tests/Volo/Abp/Minify/NUglify/CssMinifier_Tests.cs new file mode 100644 index 0000000000..c71be3450b --- /dev/null +++ b/framework/test/Volo.Abp.Minify.Tests/Volo/Abp/Minify/NUglify/CssMinifier_Tests.cs @@ -0,0 +1,28 @@ +using Shouldly; +using Volo.Abp.Minify.Styles; +using Xunit; + +namespace Volo.Abp.Minify.NUglify +{ + public class CssMinifier_Tests : AbpIntegratedTest + { + private readonly ICssMinifier _cssMinifier; + + public CssMinifier_Tests() + { + _cssMinifier = GetRequiredService(); + } + + [Fact] + public void Should_Minify_Simple_Code() + { + const string source = "div { color: #FFF; }"; + + var minified = _cssMinifier.Minify(source); + + minified.Length.ShouldBeGreaterThan(0); + minified.Length.ShouldBeLessThan(source.Length); + } + } + +} diff --git a/framework/test/Volo.Abp.Minify.Tests/Volo/Abp/Minify/NUglify/HtmlMinifier_Tests.cs b/framework/test/Volo.Abp.Minify.Tests/Volo/Abp/Minify/NUglify/HtmlMinifier_Tests.cs new file mode 100644 index 0000000000..88da207d0c --- /dev/null +++ b/framework/test/Volo.Abp.Minify.Tests/Volo/Abp/Minify/NUglify/HtmlMinifier_Tests.cs @@ -0,0 +1,27 @@ +using Shouldly; +using Volo.Abp.Minify.Html; +using Xunit; + +namespace Volo.Abp.Minify.NUglify +{ + public class HtmlMinifier_Tests : AbpIntegratedTest + { + private readonly IHtmlMinifier _htmlMinifier; + + public HtmlMinifier_Tests() + { + _htmlMinifier = GetRequiredService(); + } + + [Fact] + public void Should_Minify_Simple_Code() + { + const string source = "

This is a text

"; + + var minified = _htmlMinifier.Minify(source); + + minified.Length.ShouldBeGreaterThan(0); + minified.Length.ShouldBeLessThan(source.Length); + } + } +} \ No newline at end of file diff --git a/framework/test/Volo.Abp.Minify.Tests/Volo/Abp/Minify/NUglify/JavascriptMinifier_Tests.cs b/framework/test/Volo.Abp.Minify.Tests/Volo/Abp/Minify/NUglify/JavascriptMinifier_Tests.cs new file mode 100644 index 0000000000..7ebcd65fc3 --- /dev/null +++ b/framework/test/Volo.Abp.Minify.Tests/Volo/Abp/Minify/NUglify/JavascriptMinifier_Tests.cs @@ -0,0 +1,28 @@ +using Shouldly; +using Volo.Abp.Minify.Scripts; +using Xunit; + +namespace Volo.Abp.Minify.NUglify +{ + public class JavascriptMinifier_Tests : AbpIntegratedTest + { + private readonly IJavascriptMinifier _javascriptMinifier; + + public JavascriptMinifier_Tests() + { + _javascriptMinifier = GetRequiredService(); + } + + [Fact] + public void Should_Minify_Simple_Code() + { + const string source = "var x = 5; var y = 6;"; + + var minified = _javascriptMinifier.Minify(source); + + minified.Length.ShouldBeGreaterThan(0); + minified.Length.ShouldBeLessThan(source.Length); + } + } + +} From 7d0a009a9e79411a03f044b1a6a326fb0b46052e Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 14 Nov 2019 14:39:24 +0800 Subject: [PATCH 2/3] Minify the script returned by ServiceProxyScript. Resolve #2008 --- .../ProxyScripting/ServiceProxyGenerationModel.cs | 4 +++- framework/src/Volo.Abp.Http/Volo.Abp.Http.csproj | 1 + .../Volo.Abp.Http/Volo/Abp/Http/AbpHttpModule.cs | 2 ++ .../Abp/Http/ProxyScripting/ProxyScriptManager.cs | 9 +++++++-- .../Abp/Http/ProxyScripting/ProxyScriptingModel.cs | 5 ++++- .../AbpServiceProxiesController_Tests.cs | 13 ++++++++++++- 6 files changed, 29 insertions(+), 5 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ProxyScripting/ServiceProxyGenerationModel.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ProxyScripting/ServiceProxyGenerationModel.cs index 5cc9a0a3c5..20dae137e7 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ProxyScripting/ServiceProxyGenerationModel.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ProxyScripting/ServiceProxyGenerationModel.cs @@ -11,6 +11,8 @@ namespace Volo.Abp.AspNetCore.Mvc.ProxyScripting public bool UseCache { get; set; } + public bool Minify { get; set; } + public string Modules { get; set; } public string Controllers { get; set; } @@ -32,7 +34,7 @@ namespace Volo.Abp.AspNetCore.Mvc.ProxyScripting public ProxyScriptingModel CreateOptions() { - var options = new ProxyScriptingModel(Type, UseCache); + var options = new ProxyScriptingModel(Type, UseCache, Minify); if (!Modules.IsNullOrEmpty()) { diff --git a/framework/src/Volo.Abp.Http/Volo.Abp.Http.csproj b/framework/src/Volo.Abp.Http/Volo.Abp.Http.csproj index df1e907450..57f447604e 100644 --- a/framework/src/Volo.Abp.Http/Volo.Abp.Http.csproj +++ b/framework/src/Volo.Abp.Http/Volo.Abp.Http.csproj @@ -16,6 +16,7 @@ + \ No newline at end of file diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/AbpHttpModule.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/AbpHttpModule.cs index 171f54b85f..6cccb5ff6d 100644 --- a/framework/src/Volo.Abp.Http/Volo/Abp/Http/AbpHttpModule.cs +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/AbpHttpModule.cs @@ -1,12 +1,14 @@ using Volo.Abp.Http.ProxyScripting.Configuration; using Volo.Abp.Http.ProxyScripting.Generators.JQuery; using Volo.Abp.Json; +using Volo.Abp.Minify; using Volo.Abp.Modularity; namespace Volo.Abp.Http { [DependsOn(typeof(AbpHttpAbstractionsModule))] [DependsOn(typeof(AbpJsonModule))] + [DependsOn(typeof(AbpMinifyModule))] public class AbpHttpModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptManager.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptManager.cs index 1b89de2b3a..858b78a57f 100644 --- a/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptManager.cs +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptManager.cs @@ -7,6 +7,7 @@ using Volo.Abp.Http.Modeling; using Volo.Abp.Http.ProxyScripting.Configuration; using Volo.Abp.Http.ProxyScripting.Generators; using Volo.Abp.Json; +using Volo.Abp.Minify.Scripts; namespace Volo.Abp.Http.ProxyScripting { @@ -17,18 +18,21 @@ namespace Volo.Abp.Http.ProxyScripting private readonly IJsonSerializer _jsonSerializer; private readonly IProxyScriptManagerCache _cache; private readonly AbpApiProxyScriptingOptions _options; + private readonly IJavascriptMinifier _javascriptMinifier; public ProxyScriptManager( IApiDescriptionModelProvider modelProvider, IServiceProvider serviceProvider, IJsonSerializer jsonSerializer, IProxyScriptManagerCache cache, - IOptions options) + IOptions options, + IJavascriptMinifier javascriptMinifier) { _modelProvider = modelProvider; _serviceProvider = serviceProvider; _jsonSerializer = jsonSerializer; _cache = cache; + _javascriptMinifier = javascriptMinifier; _options = options.Value; } @@ -63,7 +67,8 @@ namespace Volo.Abp.Http.ProxyScripting using (var scope = _serviceProvider.CreateScope()) { - return scope.ServiceProvider.GetRequiredService(generatorType).As().CreateScript(apiModel); + var script = scope.ServiceProvider.GetRequiredService(generatorType).As().CreateScript(apiModel); + return scriptingModel.Minify ? _javascriptMinifier.Minify(script) : script; } } diff --git a/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptingModel.cs b/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptingModel.cs index 5ab85a781b..6815c01ce5 100644 --- a/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptingModel.cs +++ b/framework/src/Volo.Abp.Http/Volo/Abp/Http/ProxyScripting/ProxyScriptingModel.cs @@ -8,6 +8,8 @@ namespace Volo.Abp.Http.ProxyScripting public bool UseCache { get; set; } + public bool Minify { get; set; } + public string[] Modules { get; set; } public string[] Controllers { get; set; } @@ -16,10 +18,11 @@ namespace Volo.Abp.Http.ProxyScripting public IDictionary Properties { get; set; } - public ProxyScriptingModel(string generatorType, bool useCache = true) + public ProxyScriptingModel(string generatorType, bool useCache = true, bool minify = false) { GeneratorType = generatorType; UseCache = useCache; + Minify = minify; Properties = new Dictionary(); } diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ProxyScripting/AbpServiceProxiesController_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ProxyScripting/AbpServiceProxiesController_Tests.cs index 10fa9bd3e7..bd7366b931 100644 --- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ProxyScripting/AbpServiceProxiesController_Tests.cs +++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ProxyScripting/AbpServiceProxiesController_Tests.cs @@ -9,8 +9,19 @@ namespace Volo.Abp.AspNetCore.Mvc.ProxyScripting [Fact] public async Task GetAll() { - var script = await GetResponseAsStringAsync("/Abp/ServiceProxyScript/"); + var script = await GetResponseAsStringAsync("/Abp/ServiceProxyScript?minify=true"); script.Length.ShouldBeGreaterThan(0); } + + [Fact] + public async Task GetAllWithMinify() + { + var script = await GetResponseAsStringAsync("/Abp/ServiceProxyScript"); + var minifyScript = await GetResponseAsStringAsync("/Abp/ServiceProxyScript?minify=true"); + + script.Length.ShouldBeGreaterThan(0); + minifyScript.Length.ShouldBeGreaterThan(0); + minifyScript.Length.ShouldBeLessThan(script.Length); + } } } From 49a5cf44909c889bb5658bd7ea539aa6f956a5e6 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 14 Nov 2019 14:42:25 +0800 Subject: [PATCH 3/3] Add Volo.Abp.Minify project to common.ps1. --- nupkg/common.ps1 | 1 + 1 file changed, 1 insertion(+) diff --git a/nupkg/common.ps1 b/nupkg/common.ps1 index b08cda26e2..eeac13eac8 100644 --- a/nupkg/common.ps1 +++ b/nupkg/common.ps1 @@ -86,6 +86,7 @@ $projects = ( "framework/src/Volo.Abp.MemoryDb", "framework/src/Volo.Abp.MongoDB", "framework/src/Volo.Abp.MultiTenancy", + "framework/src/Volo.Abp.Minify", "framework/src/Volo.Abp.ObjectMapping", "framework/src/Volo.Abp.RabbitMQ", "framework/src/Volo.Abp.Security",