如何配置ASP.NET Core静态文件以根据环境(prod vs dev)进行更改?

时间:2016-07-18 19:33:26

标签: visual-studio-2015 gulp asp.net-core asp.net-core-1.0

我有一个ang2,VS 2015,ASP.NET 4.6.1项目,但它是一个非mvc。所以我无法访问<environment>。也使用gulp,以便可以作为解决方案的一部分。

如何配置静态文件(如index.html)以使用缩小版文件?目前我正在使用gulp来完成这项工作。

我看了一下这个,但它适用于MVC项目。 https://docs.asp.net/en/latest/fundamentals/environments.html

更新

示例:

如何让wooroot文件夹中的Index.html指向开发中的非缩小脚本,然后指向生产中的缩小版本?就像在url中的示例一样。使用MVC时,您可以将其替换为代码。没有MVC,似乎不可能。

2 个答案:

答案 0 :(得分:0)

您可以使用自定义选项调用app.UseStaticFiles来更改静态文件的位置。

if (env.IsDevelopment())
{
    app.UseStaticFiles(new StaticFileOptions()
    {
        FileProvider = new PhysicalFileProvider(
            Path.Combine(Directory.GetCurrentDirectory(), @"MyStaticFiles")),
        RequestPath = new PathString("/StaticFiles")
    });
}

请注意,可能存在多个app.UseStaticFiles次呼叫。有关详细信息,请参阅Working with Static Files文档。

答案 1 :(得分:0)

好的找到了我正在寻找的答案。

使用gulp-html-replace,https://www.npmjs.com/package/gulp-html-replace

<!-- build:<name> -->
Everything here will be replaced
<!-- endbuild -->

示例:

的index.html

    

<!-- build:css -->
<link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="css/main.css">
<!-- endbuild -->

</head>
<body>

<!-- build:js -->
<script src="js/player.js"></script> 
<script src="js/monster.js"></script> 
<script src="js/world.js"></script> 
<!-- endbuild -->

gulpfile.js

var gulp = require('gulp');
var htmlreplace = require('gulp-html-replace');

gulp.task('default', function() {
  gulp.src('index.html')
    .pipe(htmlreplace({
        'css': 'styles.min.css',
        'js': 'js/bundle.min.js'
    }))
    .pipe(gulp.dest('build/'));
});