2016-08-18 49 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和凉亭,但这是另一天的实验!