我发现this(貌似)相关的SO帖子,但根据两个答案didn't help的建议,我的所有js文件都被推送到Azure(不只是我的js文件夹中的*.min.js
文件。)
我究竟做错了什么?这可能吗?我可以更新我的gulp脚本,我想读取一个环境变量(“开发”或“生产”),然后有条件地删除源js文件。让构建任务按照我的意愿运行似乎更好(特别是因为它看起来很可行。)
我的项目的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>
到目前为止,我最终选择了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。
这似乎对我有用:
通过Solution Explorer,您可以编辑项目中每个文件的Properties,并将Build Action设置为NONE。看起来您可以在执行此操作时一次选择多个文件。