2016-08-18 96 views
-1

我有一個使用grunt來改變某些環境配置設置的角度網站。Visual Studio web.config轉換和grunt

我想要的是web.config中控制這些咕嚕聲變量的應用程序設置。這樣,我可以使用web.config轉換,只要促進不同的環境。

這是正確的方法嗎?如果是這樣,我將如何實現這一點?如果不是,什麼是更好的解決方案?

回答

0

我使用Gulp,但同樣的邏輯將適用。

首先,使用Web配置變換還真是不正確的做法,我什至不知道你能做到這一點,而無需編寫一個VS擴展。

咕嚕確實有一個環境變量插件(https://github.com/jsoverson/grunt-env),這將允許您訪問節點的環境變量。

這樣你就可以將物體放在你的呼嚕聲文件有抱在一起的狀態值的子對象,例如

var settings = { 
development: [ 
    { searchApi: 'http://dev.mysite' }, 
    { title: 'MySite (DEV)' } 
], 
qa: [ 
    { searchApi: 'http://qa.mysite' }, 
    { title: 'MySite (QA)' } 
], 
live: [ 
    {searchApi: 'https://www.mysite' }, 
    { title: 'MySite' } 
]}; 

然後你做一個相關狀態數組的循環,然後搜索和替換。

然後,您可以手動切換時的呼嚕聲文件運行時,或者你可以用MSBuild的搏鬥,並根據當前配置中設置的變量的值。 IIRC,Grunt是同步的,所以它應該和MSBuild很好地配合。

編輯

只留下使用咕嘟咕嘟/呻吟的MSBuild一段時間後,我回來了,並想出了一個解決方案。

首先,你需要一個bat文件,在其中您有以下代碼(咕嘟咕嘟):

set NODE_ENV=%1 
gulp --gulpfile gulpfile.js 

接下來,打開您的解決方案性能和在預編譯,加入:

CD $(ProjectDir) 
CALL deploy.bat $(ConfigurationName) 

這將調用.bat文件,將當前配置作爲參數傳入,然後設置NODE_ENV值並運行gulp。

AFAICT,你必須這樣做,因爲一個批次,爲連續命令撥打電話似乎在不同的MSBuild上下文中運行,所以你失去了NODE_ENV值。

我懷疑你可以使用類似的粘性也得到MSBuild的運行NPM和涼亭,但這是另一天的實驗!