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