使用Visual Studio 2015发布Gulp目标文件

6
在新的Visual Studio 2015和Web Essentials插件中,他们已经删除了编译某些文件(例如Less文件)的功能。相反,他们建议使用Gulp任务。
虽然我赞成这个决定并且知道如何配置Gulp来编译Less文件,但由于这不是一个ASP.NET 5应用程序,因此新文件不会自动添加到项目中,在使用VS2015的发布功能时也不会被复制。
在我的看法中,把这些文件复制的唯一方法就是手动将它们添加到项目中。如果你创建了一个编译**/*.less的任务,你必须查找整个项目以找到生成的CSS文件并手动添加它们,这似乎有点违反直觉。
我是做错了什么,还是这就是现在的工作方式?
2个回答

6

不要手动添加文件,使用项目文件中的目标很容易添加它们。这就是我们的做法,我们还使用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>

在我们的情况下,即使它们不在 csproj 中(生成的 js 文件和生成的 css 文件),当我们发布 Scripts\Output\all_folders\ 中所有生成的 js 文件时,它们也会被发布。


BuildBefore.bat文件是做什么的?运行Gulp任务吗?我猜我们将不得不改变我们的工作方式,但我们已经习惯了只需添加一个新的.less文件(无论在项目中的哪个位置),它就可以正常工作,使用上述方法,我们需要明确所有less文件都将编译到特定的输出文件夹。我们可能也需要更多的Gulp经验 :) 谢谢您的帮助。 - Robba
是的,在BuildBefore.bat中,我们有用于恢复npm和bower包以及运行gulp任务的命令。而且,它会改变你习惯的方式,实际上编译的结果应该通过类似gulp-inject的任务注入到你的web表单/视图中。 - Liviu Costea
那么,如果我假设你不使用任务运行器浏览器绑定来绑定 Gulp 任务以进行构建事件,我就是正确的吗?因为你已经在使用 BeforeBuild.bat 文件来执行它了。 - Robba
你说得对,主要原因是我们需要在 TFS 构建中(使用 MSBuild)也能使用它。 - Liviu Costea
自去年以来,您是否遇到了更简单的方法来实现您的答案所提供的内容,或者唯一的方法是使用自定义目标包含bower安装的文件。此外,您能否发布BeforeBuild.bat,以便我们可以看到如何恢复npm / grunt,或者在vs的后续版本中是否不再需要这样做?我的团队正在使用vs 2015,我希望gulp任务在他们检出我的项目后无需进行任何手动运行即可运行。 - JARRRRG

1

如果你喜欢使用“Web Essentials”编译Less、Sass和CoffeeScript文件的方法,那么Mads Kristensen发布了一个新的VS 2015扩展程序,名为Web Compiler。试试看。此外,还可以查看他的Bundler& Minifier扩展程序,获取从Web Essentials中移除的其他功能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接