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

问题描述 投票:0回答:3

我发现this(貌似)相关的SO帖子,但根据两个答案didn't help的建议,我的所有js文件都被推送到Azure(不只是我的js文件夹中的*.min.js文件。)

我究竟做错了什么?这可能吗?我可以更新我的gulp脚本,我想读取一个环境变量(“开发”或“生产”),然后有条件地删除源js文件。让构建任务按照我的意愿运行似乎更好(特别是因为它看起来很可行。)

visual-studio azure msbuild azure-web-sites
3个回答
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>

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%" ]
  }

我验证它有效,但似乎有点hacky。


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。看起来您可以在执行此操作时一次选择多个文件。

© www.soinside.com 2019 - 2024. All rights reserved.