2015-12-29 99 views
3

我想在Visual Studio 2015中開發的MVC 4應用程序中使用Bower。我知道何時有Visual Studio 2015 Update 1的MVC 5項目,Bower管理有一個很好的用戶界面,非常像nuget界面。這部分並不重要。Bower with Visual Studio發佈

我目前使用bower - 我有npm和bower安裝程序,並且我在解決方案中有package.json和bower.json文件。保存時,Visual Studio會自動運行「npm install」,並且我在package.json中有一個安裝後步驟來運行「bower install」。

我不想將bower_components放入解決方案(或源代碼控制)中。我想要的只是保留json配置文件,當你保存時,所有的依賴關係都會被檢索到。

這一切都可以在開發中正常工作,但不起作用的是右鍵單擊Web項目,發佈。發佈不會運行「npm install」,並且不包含解決方案中未包含的文件(除了它似乎可以在解決方案中包含的nuget包以外)。 「發佈Web」功能是我的Web應用程序如何部署到使用IIS部署的生產。

如何使Visual Studio Web Publish與Bower一起工作?

另一種方法 - 我已經看到有團隊系統構建的新鉤子會運行吞吐任務,但我不知道你可以這種方式直接發佈到IIS。

+0

在mvc5不是剛剛發佈的WWW文件夾。意思是,你的涼亭組件不會被髮布,因爲它不在www文件夾中。 –

+0

@SteveKennedy - 我想你是說MVC5項目會存在同樣的問題? – user210757

+1

@SteveKennedy我想你正在考慮MVC6/ASP.NET 5. MVC4和5沒有wwwroot概念。 – Jimmy

回答

4

而不是引用/部署完整的bower_components文件夾,您可以使用gulp或grunt腳本(選擇任何您喜歡的)將正確的文件從bower_components文件夾中複製到類似scripts/lib的文件中。

然後,您可以將這些文件包含在源代碼管理中,然後部署它們。

以下是我用於完成此一咕嚕文件:

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"); 
}; 
+1

是的,我現在,但我需要這個與Visual Studio中的Web發佈功能一起工作。它做的更多,包括通過http部署到遠程IIS服務器。 – user210757

+0

我並不是說你不應該使用Web Deploy。我建議你將你的bower目錄中的特定文件移動到項目的源代碼樹中,並將這些特定文件包含在你的項目中。隨後將使用Web Deploy進行部署。 –

+2

我明白了。我意識到我可以做到這一點,但我特別想避免這種情況。我不想在解決方案或源代碼控制中使用bower組件,只需要bower.json引用必要的組件。對不起,如果不明確。編輯 - 我認爲你的建議有點不同,你建議只在解決方案中保留「dist」文件,並且通過一口氣任務將它們放在那裏? – user210757

-1

在ASP.NET核心(即MVC6),鮑爾被配置(在.bowerrc文件)來添加腳本WWWROOT /而不是bower_components文件夾。該內容由Visual Studio發佈。

使用.a bowerrc文件的相同方法適用於MVC4網站(至少如果您使用的是Visual Studio 2015)。但是,它也會被檢入到版本控制中,因此它可能不是您想要的。

.bowerrc文件可用於執行各種操作(請參閱http://bower.io/docs/config/)。然而,讓鮑爾在〜/腳本/ lib目錄的腳本添加到項目中,您只需添加以下JSON:

{ 
    "directory": "scripts/lib" 
} 
+1

我看到了,但我不想要所有內容.bower包是所有的源文件,構建文件和dist文件。你真正想要包含在你的發行版中的是你正在使用的dist文件你需要像gulp這樣的東西來抓取你想要的東西(以及concat/minify等等)。真的,部署需要一個鉤子,像新的TFS Build似乎擁有一樣的吞吐量或者咕嚕聲,但是部署具有很好的直接部署到IIS站點的能力... – user210757

+1

如何在項目構建後事件掛鉤中使用gulp命令來提取您想要的內容? –