使用 Visual Studio 2015 发布 Gulp 目标文件
Posted
技术标签:
【中文标题】使用 Visual Studio 2015 发布 Gulp 目标文件【英文标题】:Publish Gulp destination files with Visual Studio 2015 【发布时间】:2015-07-22 19:23:53 【问题描述】:在新的 Visual Studio 2015 和 Web Essentials 插件中,他们删除了编译某些文件(如 Less 文件)的功能。相反,他们建议使用 Gulp 任务。
虽然我对这个决定表示赞赏并了解如何配置 Gulp 来编译 Less 文件,但由于这不是 ASP.NET 5 应用程序,新文件不会自动添加到项目中,因此不会被复制使用VS2015的发布功能。
在我看来,复制这些文件的唯一方法是手动将它们添加到项目中。这似乎与直觉相反,如果您创建一个任务来编译 **/*.less,您必须查看整个项目以找到生成的 css 文件并手动添加它们。
我只是做错了什么,还是这就是它现在的工作方式?
【问题讨论】:
【参考方案1】:不要手动添加文件,在项目文件中添加目标非常容易。这就是我们的做法,我们还使用 gulp-rev 包动态修改我们的文件名(因此它们不会被浏览器缓存)。以下是 .csproj 文件中的 BeforeBuild 目标的样子:
<Target Name="BeforeBuild">
<Exec Command="BeforeBuild.bat" WorkingDirectory="$(ProjectDir)" />
<ItemGroup>
<Content Include="Scripts\Output\**\*.js" />
<Content Include="Content\**\output\**\*.css" />
</ItemGroup>
</Target>
在我们的例子中,当我们从 Scripts\Output\all_folders\ 发布所有生成的 js 文件时,即使它们不在 csproj 中(对于生成的 css 文件也是如此)
【讨论】:
BuildBefore.bat 文件有什么作用?运行 Gulp 任务?我想我们将不得不改变我们的工作方式,但我们有点习惯于只添加一个新的 .less 文件(在项目中的任何位置),它就可以工作,使用上面我们需要把它放在我们的脑海中所有较少的文件将被编译到特定的输出文件夹。我们可能也需要更多的 Gulp 经验 :) 感谢您的帮助 是的,在 BuildBefore.bat 中,我们有用于恢复 npm 和 bower 包以及运行 gulp 任务的命令。是的,它改变了你习惯的方式,因为实际上编译的结果应该通过 gulp-inject 之类的任务注入到你的 webform/view 中。 那么我是否正确假设您不使用 Task Runner Explorer 绑定来绑定 Gulp 任务以构建事件?因为您已经在使用 BeforeBuild.bat 文件。 你说得对,主要原因是我们的 TFS 构建(使用 MSBuild)也需要这个。 自去年以来,您是否遇到过一种更简单的方法来实现您提供的答案,或者是使用自定义目标包含 bower 安装文件的唯一方法。您还可以发布 BeforeBuild.bat 以便我们可以看到您如何恢复 npm/grunt 或者这在更高版本的 vs 中不再需要?我的团队正在使用 vs 2015,我希望 gulp 任务在他们检查我的项目后无需手动运行即可运行。【参考方案2】:对于那些喜欢使用“Web Essentials”方法来编译 Less、Sass 和 CoffeeScript 文件的人,Mads Kristensen 发布了一个名为 Web Compiler 的新 VS 2015 扩展。试试吧。另请参阅他的 Bundler & Minifier 扩展程序,了解从 Web Essentials 中删除的其他功能。
【讨论】:
以上是关于使用 Visual Studio 2015 发布 Gulp 目标文件的主要内容,如果未能解决你的问题,请参考以下文章
从 Visual Studio 2013 转换到 Visual Studio 2015 的问题
使用平台工具集 v120 (Visual Studio 2013) 在 Visual Studio 2015 中创建 C++/CLI 项目
使用 Visual Studio 2015 安装 xamarin
使用 Visual Studio 2015 在 gulp 中检测发布/调试