Nic*_*asR 3 polymer asp.net-core visual-studio-2017
我是ASP.NET Core的忠实拥护者,从最初的步骤到VS2017中的集成,一直到基于msbuild的项目系统,都遵循了它的演变。我也是Google Polymer的忠实拥护者,现在2.0版本已经差不多完成了,我想尝试两者的结合。
我创建了一个ASP.NET Core Web Api项目,该项目将为Polymer前端实现REST API。然后我将命令行指向wwwroot文件夹并执行
polmyer init
Run Code Online (Sandbox Code Playgroud)
创建一个应用程序模板,该模板创建一些模板html文件和一个带有所有基本依赖项的bower_components目录,所有这些都位于wwwroot文件夹中!
我的问题是:
VS2017具有发布功能,默认情况下会发布wwwroot文件夹中的所有内容,但可能会让我排除特定的文件或文件夹。另一方面,Polymer CLI作为构建功能,使我可以将ES6编译为ES5,最小化HTML,CSS,JS或全部,并将文件捆绑在一起。如何将两者结合起来以在VS2017中为我提供单击发布体验?
这是我当前的解决方案:
使用VS2017创建一个新的ASP.NET Core Web应用程序(.NET Core)项目。添加Microsoft.AspNetCore.StaticFiles Nuget包,以便能够提供静态文件。
使用命令行导航到wwwroot目录,然后执行
polymer init
Run Code Online (Sandbox Code Playgroud)
按照向导创建所需的聚合物项目类型。
在VS IDE中打开csproj文件,找到其中包含wwwroot目录作为文件夹的项目组。注释掉这一行并添加两行。第一个阻止VS复制整个wwwroot目录。第二个再次添加了聚合物构建目录,因此我们以后可以在复制任务中引用它。
<ItemGroup>
<!--<Folder Include="wwwroot\" />-->
<Content Update="wwwroot\**\*" CopyToPublishDirectory="Never" />
<ClientFiles Include="wwwroot\build\default\**\*" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
(请注意,我在内容节点中使用了Update而不是Include!)
创建具有以下内容的批处理文件Polymer-build.cmd并将其放置在项目根目录中。这将使Polymer在每个VS发布之前先构建客户端文件。
cd wwwroot
polymer build
Run Code Online (Sandbox Code Playgroud)
在这里,您可以添加--js-compile,-css-minify等选项。
在发布之前,在csproj文件中创建一个新的目标节点以调用批处理文件
<Target Name="PolymerBuild" BeforeTargets="Publish">
<Exec Command="polymer-build.cmd" />
</Target>
Run Code Online (Sandbox Code Playgroud)
最后,使用复制任务创建另一个目标节点,以将聚合物构建目录复制到wwwroot目录
<Target Name="PolymerPublish" AfterTargets="Publish">
<Copy SourceFiles="@(ClientFiles)" DestinationFolder="$(PublishUrl)\wwwroot\%(RecursiveDir)" />
</Target>
Run Code Online (Sandbox Code Playgroud)
加成
您可能还想抑制TypeScript编译,您可以在csproj中通过
<PropertyGroup>
<TypeScriptCompileBlocked>True</TypeScriptCompileBlocked>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
参考文献:
归档时间: |
|
查看次数: |
1506 次 |
最近记录: |