排除.js,在使用VS 2015发布到Azure时包含.min.js

时间:2016-09-25 22:51:24

标签: visual-studio azure msbuild azure-web-sites

我发现了this(貌似)相关的SO帖子,但是根据两个答案didn't help的建议,我的所有js文件都被推送到Azure(而不仅仅是{{来自我的js文件夹的1}}文件。)

我做错了什么?这可能吗?我可以更新我的gulp脚本,我想读取一个环境变量(“开发”或“生产”),然后有条件地删除源js文件。如我所希望的那样构建任务函数似乎更好(特别是因为它看起来可行。)

3 个答案:

答案 0 :(得分:0)

  

我项目的Js文件位于[解决方案文件夹] [项目文件夹] \ wwwroot \ js。

根据您在上述相关SO post中添加的评论,我假设您的应用程序基于ASP.NET Core。据我所知,我们可以通过在project.json文件中配置publishOptions部分来确定发布Web应用程序时可以包含或排除哪个文件/文件夹,如下所示:

"publishOptions": {
  "include": [
    "wwwroot",
    "wwwroot/js/**/*.min.js",
    "Views",
    "Areas/**/Views",
    "appsettings.json",
    "web.config"
  ],
  "exclude": [
    "wwwroot/js/**/*.js"
  ]
}

但是,正如此tutorial提到排除模式的优先级高于包含模式,因此将排除在两者中找到的文件。在这种情况下,您需要在publishOptions的includeFiles / excludeFiles节点中配置所有包含/排除的文件。

根据您的要求,Using Gulp将是实现目标的理想方法。

此外,如果您的项目是ASP.NET MVC应用程序,则可以将以下内容添加到.pubxml文件中。

<ItemGroup>
  <ExcludeFromPackageFiles Include="wwwroot\js\**\*.js" Exclude="wwwroot\js\**\*.min.js">
    <FromTarget>Project</FromTarget>
  </ExcludeFromPackageFiles>
</ItemGroup>

答案 1 :(得分:0)

到目前为止,我最终选择了gulp路线(如果可行,仍然对其他替代方案感兴趣。)

在我的gulpfile中创建了一个新任务...

var del = require("del");
gulp.task("remove-non-minjs", function () {
    return del([
        paths.scripts.dest + "**/*.js",
        "!" + paths.scripts.dest + "**/*.min.js"
    ]);
});

然后将其添加到我的project.json的预发布脚本中......

  "scripts": {
    "prebuild": [ "gulp default" ],
    "prepublish": [ "npm install", "gulp default", "gulp remove-non-minjs" ],
    "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ]
  }

我确认它有效,但看起来有点笨拙。

答案 2 :(得分:0)

这似乎对我有用:

https://docs.microsoft.com/en-us/aspnet/web-forms/overview/deployment/advanced-enterprise-web-deployment/excluding-files-and-folders-from-deployment

通过Solution Explorer,您可以编辑项目中每个文件的Properties,并将Build Action设置为NONE。看起来您可以在执行此操作时一次选择多个文件。