asp.net - Bower 与 Visual Studio 发布

标签 asp.net tfs npm visual-studio-2015 bower

我想在使用 Visual Studio 2015 开发的 MVC 4 应用程序中使用 Bower。我知道当您有一个 MVC 5 项目时,使用 Visual Studio 2015 Update 1,有一个用于 Bower 管理的漂亮 UI,很像 nuget界面。这部分并不重要。

我目前正在使用 Bower - 我有 npm 和 Bower 设置,并且解决方案中有 package.json 和 Bower.json 文件。保存时,Visual Studio 会自动运行“npm install”,并且我在 package.json 中有一个安装后步骤来运行“bower install”。

我不想将 Bower_components 放入解决方案(或源代码管理)中。我想要的是只保留 json 配置文件,保存时会检索所有依赖项。

这一切在开发中都工作得很好,但是右键单击“Web 项目”、“发布”则不起作用。发布不运行“npm install”,并且不包含未包含在解决方案中的文件(除非它似乎适用于未包含在解决方案中的 nuget 包)。 “发布 Web”功能是使用 IIS 部署将我的 Web 应用程序部署到生产环境的方式。

如何使 Visual Studio Web Publish 与 Bower 配合使用?

另一种选择 - 我已经看到 Team System Builds 有新的钩子(Hook)可以运行 gulp 任务,但我不知道您是否可以通过这种方式直接发布到 IIS。

最佳答案

您可以使用 gulp 或 grunt 脚本(选择您喜欢的任何内容)将正确的文件从 Bower_components 文件夹复制到诸如 script/lib 之类的目录,而不是引用/部署完整的 Bower_components 文件夹。

然后,您可以将这些文件包含在源代码管理中并随后部署它们。

以下是我用来完成此操作的 grunt 文件:

module.exports = function (grunt) {
    grunt.initConfig({
        pkg: grunt.file.readJSON("package.json"),
        copy: {
            main: {
                files: [
                  {
                      expand: true,
                      flatten: true,
                      src: [
                          'node_modules/vss-sdk/lib/VSS.SDK.js',
                          'node_modules/moment/moment.js',
                          'node_modules/moment-timezone/moment-timezone.js',
                          'node_modules/jquery/dist/jquery.js',
                          'bower_components/datetimepicker/jquery.datetimepicker.js',
                          'bower_components/datetimepicker/jquery.datetimepicker.css',
                      ],
                      dest: 'scripts/lib',
                      filter: 'isFile'
                  }              
                ]
            }
        }
    });

    grunt.loadNpmTasks("grunt-exec");
    grunt.loadNpmTasks("grunt-contrib-copy");
};

关于asp.net - Bower 与 Visual Studio 发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34517032/

相关文章:

tfs - 如何让 TFS 忽略具有特定名称的所有文件夹

reactjs - 带有 npm 链接的样式组件会导致错误 : "Trying to insert a new style tag, but the given Node is unmounted"

node.js - 无法在亚马逊ec2实例中为我的nodejs应用程序安装java模块

jquery - 需要帮助使用 jquery 将数据发布到 ASP.NET MVC 应用程序

asp.net - 带有服务器端资源字符串的 HTML 输入标签

c# - 如何在不使用 ASP.NET 服务器端控件的情况下从 C# ASP.NET 中的 HTML 文件类型读取输入流

c# - 如何使用 EF6 更新多对多表

c# - 在 TFS 构建服务器上运行单元测试 Fakes Framework |错误

git - 在 TFS 商店中使用 Git

npm - 从 readme.md 到包中另一个文件的相对链接,在 npmjs 中呈现