2017-01-27 19 views
1

有没有一种方法可以在构建时评估某些东西,然后在angular-cli构建过程中将其添加到应用程序中?如何使用angular-cli将构建时环境变量添加到应用程序中?

使用案例:

我以前用gulp构建了一个应用程序。您可以执行类似:

git rev-parse --short HEAD 

然后,你可以使用gulp-replace将其添加到应用程序:

const GIT_VERSION = "{GIT_VERSION}"; 

最后,编译的应用程序看起来像:

const GIT_VERSION = "59e5722"; 

angular-cli是否提供了一些方法来实现这一点,而不必恢复吞噬?

回答

0

如果我正确理解你的问题,你有没有看过Angular2 CLI的environment文件?

ng build可以同时指定一个构建目标(--target=production--target=development)和一个环境文件到与该构建被使用(--environment=dev或 - -environment=prod)。默认情况下,使用 开发构建目标和环境。

的映射用于确定哪个环境文件用于可以是 在角cli.json实测值:

"environments": { 
    "source": "environments/environment.ts", 
    "dev": "environments/environment.ts", 
    "prod": "environments/environment.prod.ts" 
} 

静态解

修改与你所需的值时,这些文件在每一个将在构建时将它们并入到每个相应的构建中。

例如,environment.dev.ts可能是这样的:

export const environment = { 
    production: false, 
    apiUrl: 'http://dev-api.mysite.com/v1/', 
    loggingEnabled: true, 
    environmentName: 'Development' 
}; 

动态解决方案

如果你正在寻找的东西多一点健壮/动态,你可以使用像replace-in-file这样的插件,结合环境文件,最好在How to insert a Build Number or Timestamp at build time in AngularCLIVolodymyr Bilyachat的博客文章Angular 2 - Manage application version的接受答案中进行描述,这将允许沿用以下内容:

export const environment = { 
    production: false, 
    version: '{BUILD_VERSION}', 
    apiUrl: 'http://dev-api.mysite.com/v1/', 
    loggingEnabled: true, 
    environmentName: 'Development' 
} 
+1

动态解决方案正是我所期待的。谢谢 – David

相关问题