NativeScript,代码共享和不同的环境

时间:2018-10-18 15:07:26

标签: configuration nativescript angular2-nativescript nativescript-codesharing

注意:这不是对thisthis其他问题的重复。请继续阅读:这个问题是特定于代码共享模板的。


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

现在,我正在研究框架如何支持不同的“构建配置”。明确地说,我正在寻找一种简单的-希望是正式的方式-让应用程序根据当前平台(web / ios / android)和环境使用特定文件的不同版本(我们称其为configuration.ts) (开发/生产/分期?)。

做第一部分显然是微不足道的-毕竟,这是代码共享原理图的主要目的。因此,同一文件的不同版本由不同的扩展名标识。 This page explain things pretty simply

如果框架/模板支持任何类似的基于约定的规则,这些规则可用于在文件的调试/发行(甚至更好的开发/登台/生产)版本之间进行切换,则我不那么容易。以一个config.ts文件为例,该文件根据环境包含不同的参数。

我已经对该主题进行了一些研究,但找不到最终答案:

  • the old and now retired documentation for the appbuilder platform提到了文件的( .debug。 .release。)命名约定。我不认为这项工作了。
  • 其他来源提到在调用tns build / tns run时传递参数,然后通过webpack env变量... See here来获取参数。这可能有效,但似乎令人费解。
  • 提到的第三个选项是使用挂钩自定义构建(or use a plugin that should do the same
  • 最后,由于某种奇怪的原因,@ nativescript / schematics似乎会生成一个默认项目,其中包含两个名为environment.tsenvironment.prod.ts的文件。我怀疑那些仅适用于该项目的网络版本(阅读:ng serve)-我无法使移动编译器识别以debug.ts,prod.ts或release.ts结尾的文件/ li>

虽然我试图做的事情可能不仅仅得到支持(还可以吗?),但普遍的困惑和对此事的反对意见使我认为我可能在某处缺少了某物。

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

2 个答案:

答案 0 :(得分:1)

尚不支持环境文件,目前可以通过build命令传递环境变量。

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

答案 1 :(得分:0)

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