【问题标题】:Publish only minified versions of JavaScript files (ASPNET Core)仅发布 JavaScript 文件的缩小版本 (ASPNET Core)
【发布时间】:2019-02-27 15:13:37
【问题描述】:

虽然有几篇关于这个问题的文章,但我似乎找不到任何最新并适用于 ASPNET Core 2.x、Visual Studio 2017 的文章。

如何仅发布我的 JavaScript (.js) 文件的缩小版本?

最好通过发布配置文件 (.pubxml) 执行此操作,这样我就可以通过设置不同的发布配置文件(Dev、UAT、Staging、Production)来包含/排除。

【问题讨论】:

  • 有 MVc 包,这不适合你吗?
  • 如果您指的是创建一个压缩文件包,这并不能解决原始 .js 文件的发布问题...任何人都可以通过调整 URL 来查看它。
  • 我的意思是你可以有两个不同的包,一个在发布,另一个在调试,同样的也可以应用于不同的属性。看看这个,但不确定这是否是您要寻找的答案。stackoverflow.com/questions/3788605/…
  • 当然,我可以创建两个捆绑包,但它看起来太老套了。我只是不知道为什么你的发布配置中不能有一些有助于说,不要部署这些文件的东西。这是我的问题。
  • 这似乎是不可能的,所以我写了一个构建后的 powershell,它只是删除了存在缩小版本的 CSS 和 JavaScript 文件。

标签: javascript asp.net-core publish minify


【解决方案1】:

只需排除所有 .css/.js 文件,然后包含 .min 文件。最后一条规则覆盖前一条。

<ItemGroup>
   <Content Update="wwwroot\**\*.css" CopyToPublishDirectory="never" />
   <Content Update="wwwroot\**\*.min.css" CopyToPublishDirectory="always" />
   <Content Update="wwwroot\**\*.js" CopyToPublishDirectory="never" />
   <Content Update="wwwroot\**\*.min.js" CopyToPublishDirectory="always" />
</ItemGroup>

【讨论】:

  • 看起来可以工作,超级简单,易于理解。
【解决方案2】:

发布配置文件本质上是项目文件覆盖,并使用与项目文件相同的架构。 Microsoft 在此处提供了一个示例:https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/visual-studio-publish-profiles?view=aspnetcore-2.2#exclude-files

<ItemGroup>
  <Content Update="wwwroot/content/**/*.txt" CopyToPublishDirectory="Never" />
</ItemGroup>

此外,您可以直接在项目中根据构建配置将项目中的任何文件设置为包含或排除: Conditional Content Based Upon Configuration

【讨论】:

  • 我曾尝试过类似的事情,但没有成功。因为使用了“从不”,所以我否定了我的模式,只允许最小文件版本。
  • 啊,好点;您是否尝试过排除属性? docs.microsoft.com/en-us/visualstudio/msbuild/… -
  • 底线...publish 不支持多种通配语法,要么使用 [] 将模式放置在数组中,要么仅用逗号分隔它们。我尝试了很多变量,但没有任何效果。
猜你喜欢
  • 1970-01-01
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
  • 2014-03-11
  • 2017-11-24
  • 1970-01-01
  • 2017-08-10
  • 1970-01-01
相关资源
最近更新 更多