注意:这不是这个或这个其他问题的欺骗。继续阅读:这个问题特定于代码共享模板。
我正在使用 NativeScript、Angular 和代码共享模板(参见:@nativescript/schematics)做一些非常基本的实验。
现在我正在对框架如何支持不同的“构建配置”进行一些探索/ poc 工作。需要明确的是,我正在寻找一种简单的(希望是官方的)方法,让应用程序根据当前平台(web/ios/android)和环境使用不同版本的特定文件(我们称之为 configuration.ts) (开发/生产/分期?)。
做第一部分显然是微不足道的——毕竟这是代码共享原理图的主要目的。因此,同一文件的不同版本由不同的扩展名标识。这个页面解释得很简单。
我不太容易得到的是框架/模板是否支持任何类似的基于约定的规则,这些规则可用于在文件的调试/发布(甚至更好的开发/暂存/生产)版本之间切换。例如,考虑一个config.ts
包含基于环境的不同参数的文件。
我已经对该主题进行了一些研究,但我无法找到一个确凿的答案:
- appbuilder 平台的旧文档和现已退役的文档提到了文件的(.debug.和.release.)命名约定。我不认为这项工作了。
- 其他来源提到在调用
tns build
/期间传递参数tns run
,然后通过 webpack env 变量获取它们...参见此处。这可能有效,但似乎奇怪地令人费解 - 提到的第三个选项是使用钩子来自定义构建(或使用应该做同样事情的插件)
- 最后,出于某种奇怪的原因,@nativescript/schematics 似乎生成了一个默认项目,其中包含两个名为
environment.ts
and的文件environment.prod.ts
。我怀疑那些只适用于项目的网络版本(阅读ng serve
:) - 我无法让移动编译器识别以 debug.ts、prod.ts 或 release.ts 结尾的文件
虽然我试图做的事情可能不仅仅得到支持(还没有?),但普遍的困惑和对此事的不同意见让我觉得我可能在某个地方遗漏了一些东西。
如果它以某种方式得到支持,我还想知道它如何与NativeScript Sidekick 应用程序集成,该应用程序通常被建议作为一种工具来简化 NativeScript 应用程序的构建/运行过程(无法为 tns 命令指定其他参数Sidekick 自动化,唯一可用的选项是在调试/发布模式之间切换),但这可能最好留给另一个问题。