Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何将gulp与新的mvc6标记助手一起用于不同的环境?_Asp.net_Asp.net Mvc_Azure_Gulp - Fatal编程技术网

Asp.net 如何将gulp与新的mvc6标记助手一起用于不同的环境?

Asp.net 如何将gulp与新的mvc6标记助手一起用于不同的环境?,asp.net,asp.net-mvc,azure,gulp,Asp.net,Asp.net Mvc,Azure,Gulp,我完全不明白这个概念。我正在学习新的ASP5/MVC6模式,并希望做以下工作: 在my\u Layout.cshtml中使用帮助程序,仅包括基于环境的完整源代码与缩小源代码 使用Gulp将源代码注入正确的帮助程序 在构建/更改源时在本地触发此注入,以及这在生产环境(Azure)中是如何工作的 我的wwwroot目录是否应该是仅可供浏览器使用的静态文件?IE:我把我的源代码site.js和site.css放在这里。。。但是我是否应该将这些源文件放在其他地方,然后使用Gulp构建它们,然后将它们放

我完全不明白这个概念。我正在学习新的ASP5/MVC6模式,并希望做以下工作:

  • 在my
    \u Layout.cshtml
    中使用
    帮助程序,仅包括基于环境的完整源代码与缩小源代码

  • 使用Gulp将源代码注入正确的
    帮助程序

  • 在构建/更改源时在本地触发此注入,以及这在生产环境(Azure)中是如何工作的

  • 我的
    wwwroot
    目录是否应该是仅可供浏览器使用的静态文件?IE:我把我的源代码
    site.js
    site.css
    放在这里。。。但是我是否应该将这些源文件放在其他地方,然后使用Gulp构建它们,然后将它们放在
    wwwroot

我的项目结构如下所示:

/site
  /wwwroot
    /css
      site.css
    /js
      site.js
    /img
      logo.png
    /lib
      /bootstrap
      /jquery
  /Controllers
  /Views
  project.json
  bower.json
我的
\u Layout.cshtml
具有:

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>@ViewBag.Title</title>

    <environment name="Development">
        <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
        <link rel="stylesheet" href="~/css/site.css" />
    </environment>
    <environment name="Staging,Production">
        <!-- How to inject minified version here? -->
    </environment>
</head>
<body>
    <main>
        @RenderBody()
    </main>

    <environment name="Development">
        <script type="text/javascript" src="~/lib/jquery/dist/jquery.js"></script>
        <script type="text/javascript" src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
        <script type="text/javascript" src="~/js/site.js"></script>
    </environment>
    <environment name="Staging,Production">
        <!-- How to inject minified version here? -->
    </environment>
</body>
</html>

@视图包。标题
@RenderBody()
我找到了设置ASPNET_ENV的方法,尽管我不确定它是否仍然有效/最新

我真正的挫折来自:

  • 设置Gulp只需构建我的源js/css,缩小它,然后输出它,这样我就可以从我的html中引用它

注意:指向第三方库很容易,因为我可以在
帮助中对其进行硬编码。这只是我自己的来源,我不确定最佳做法是什么。

您可以使用Gulp缩小和压缩文件,并在
wwwroot
中输出捆绑包

然后,在
\u layout.cshtml
中,您可以使用
asp append version
标记帮助程序将文件的哈希附加到URI以进行缓存破坏。在这里,我将第三方脚本与
site.js
捆绑在一起,但如果需要,您可以单独缩小它们;概念是一样的

<environment names="Development">
    <script src="~/lib/jquery/dist/jquery.js"></script>
    <script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
    <script src="~/js/site.js" asp-append-version="true"></script>
</environment>
<environment names="Staging,Production">
    <script src="~/bundles/js/site-bundle.min.js" asp-append-version="true"></script>
</environment>
我这里有一个完整的工作示例:

链接已断开。请把它修好。
var paths = {
  js: [
    webroot + "lib/jquery/dist/jquery.min.js",
    webroot + "lib/bootstrap/dist/js/bootstrap.js",
    webroot + "js/**/*.js"
  ],
  minJs: webroot + "js/**/*.min.js",
  concatJsDest: webroot + "bundles/js/site-bundle.min.js",

  // ...

};

gulp.task("min:js", function () {
  return gulp.src(paths.js.concat(["!" + paths.minJs]), {
    base: "."
  })
    .pipe(concat(paths.concatJsDest))
    .pipe(uglify())
    .pipe(gulp.dest("."));
});