【发布时间】:2018-11-23 05:39:15
【问题描述】:
我使用新的 CLI 6.x 创建了一个库。我还在其中创建了一个 Angular 服务,我想为我的开发和生产环境使用不同的 URL。所以我在我的库文件夹中创建了一个environment.ts 和一个environment.prod.ts 文件。
//dev
export const environment = {
production: false,
url: 'dev-url'
};
//prod
export const environment = {
production: true,
url: 'prod-url'
};
我还在angular.json 文件中添加了“fileReplacements”属性:
"configurations": {
"production": {
"fileReplacements": [{
"replace": "projects/tk-shared/src/environments/environment.ts",
"with": "projects/tk-shared/src/environments/environment.prod.ts"
}],
"project": "projects/tk-shared/ng-package.prod.json"
}
}
使用ng build tk-shared 编译库可以工作并使用dev 设置,但是使用ng build --prod tk-shared 编译时出现以下错误:
Schema validation failed with the following errors: Data path "" should NOT have additional properties(fileReplacements).
我的提示是,原因是tk-shared 在angular.json 中有projectType: "library" 属性。
无论如何,是否可以在库中使用环境文件?
【问题讨论】:
-
这似乎是个坏主意。你的库不应该管理配置;消费应用程序应该通过库需要什么。从这个意义上说,一个库应该有点愚蠢,但足够聪明,可以知道什么时候没有提供它需要的配置。
-
@R.Richards 我喜欢你的想法。你能举个例子吗?
-
你可以找到一个例子来说明如何做到这一点here;这是给 Firebase 的。具体来说,看看他们如何实现/使用他们的
initializeApp函数。所有细节都在他们的代码中。玩得开心! -
@R.Richards 感谢您的提示,我设法弄清楚了。这是一个优雅的解决方案!
标签: javascript angular typescript angular-cli