1

注意:这不是这个这个其他问题的欺骗。继续阅读:这个问题特定于代码共享模板。


我正在使用 NativeScript、Angular 和代码共享模板(参见:@nativescript/schematics)做一些非常基本的实验。

现在我正在对框架如何支持不同的“构建配置”进行一些探索/ poc 工作。需要明确的是,我正在寻找一种简单的(希望是官方的)方法,让应用程序根据当前平台(web/ios/android)和环境使用不同版本的特定文件(我们称之为 configuration.ts) (开发/生产/分期?)。

做第一部分显然是微不足道的——毕竟这是代码共享原理图的主要目的。因此,同一文件的不同版本由不同的扩展名标识。这个页面解释得很简单

我不太容易得到的是框架/模板是否支持任何类似的基于约定的规则,这些规则可用于在文件的调试/发布(甚至更好的开发/暂存/生产)版本之间切换。例如,考虑一个config.ts包含基于环境的不同参数的文件。

我已经对该主题进行了一些研究,但我无法找到一个确凿的答案:

  • appbuilder 平台的旧文档和现已退役的文档提到了文件的(.debug..release.)命名约定。我不认为这项工作了。
  • 其他来源提到在调用tns build/期间传递参数tns run,然后通过 webpack env 变量获取它们...参见此处。这可能有效,但似乎奇怪地令人费解
  • 提到的第三个选项是使用钩子来自定义构建(或使用应该做同样事情的插件
  • 最后,出于某种奇怪的原因,@nativescript/schematics 似乎生成了一个默认项目,其中包含两个名为environment.tsand的文件environment.prod.ts。我怀疑那些只适用于项目的网络版本(阅读ng serve:) - 我无法让移动编译器识别以 debug.ts、prod.ts 或 release.ts 结尾的文件

虽然我试图做的事情可能不仅仅得到支持(还没有?),但普遍的困惑和对此事的不同意见让我觉得我可能在某个地方遗漏了一些东西。

如果它以某种方式得到支持,我还想知道它如何与NativeScript Sidekick 应用程序集成,该应用程序通常被建议作为一种工具来简化 NativeScript 应用程序的构建/运行过程(无法为 tns 命令指定其他参数Sidekick 自动化,唯一可用的选项是在调试/发布模式之间切换),但这可能最好留给另一个问题。

4

2 回答 2

1

尚不支持环境文件,从构建命令传递环境变量可能是目前可行的解决方案。

但是,当然,如果您希望立即支持环境文件,您可以编写自己的原理图。

于 2018-10-18T17:01:29.200 回答
0

我还没有考虑在网络和移动设备之间共享环境文件 - 我确实喜欢 Manoj 关于修改原理图的建议,但我猜当我到达那里时我必须越过那座桥。我可能会回答您关于 Sidekick 的第二个问题。最新版本确实支持“Webpack”构建选项,该选项似乎将 --bundle 参数传递给 tns。需要注意的是,这个选项似乎对打字稿错误更敏感,即使是相对良性的错误,所以你必须小心并确保在构建之前修复它们。在我的情况下,我必须将 package.json 中的 @types/jasmine 版本锁定为“2.8.6”,以避免它与 Sidekick 的云解决方案正在使用的 typescript 版本之间存在一些不兼容。另一个提示是检查“Clean Build” 在进行 npm 依赖项更改之后。祝你好运!

于 2018-11-13T04:15:13.600 回答