Configuration NativeScript、代码共享和不同的环境

Configuration NativeScript、代码共享和不同的环境,configuration,nativescript,angular2-nativescript,nativescript-codesharing,Configuration,Nativescript,Angular2 Nativescript,Nativescript Codesharing,注意:这不是一个欺骗或其他问题。继续阅读:此问题特定于代码共享模板 我正在用NativeScript、Angular和代码共享模板做一些非常基本的实验(请参阅) 现在,我正在对框架如何支持不同的“构建配置”进行一些探索/poc工作。明确地说,我正在寻找一种简单的——希望是官方的——方法,让应用程序基于当前平台(web/ios/android)和环境(开发/生产/登台?)使用不同版本的特定文件(让我们称之为configuration.ts) 完成第一部分显然是微不足道的——毕竟这是代码共享示意图

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


我正在用NativeScript、Angular和代码共享模板做一些非常基本的实验(请参阅)

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

完成第一部分显然是微不足道的——毕竟这是代码共享示意图的主要目的。因此,同一文件的不同版本由不同的扩展名标识

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

我在该主题上做了一些研究,但未能找到结论性答案:

  • 提到文件的(.debug.and.release.)命名约定。我不认为这工作了
  • 其他来源提到在调用
    tns build
    /
    tns run
    期间传递参数,然后通过webpack env变量获取它们。这可能有效,但似乎奇怪地复杂
  • 提到的第三个选项是使用钩子自定义构建()
  • 最后,出于某种奇怪的原因,@nativescript/schematics似乎生成了一个默认项目,其中包含两个名为
    environment.ts
    environment.prod.ts
    的文件。我怀疑这些仅适用于项目的web版本(阅读:
    ng serve
    )-我无法让移动编译器识别以debug.ts、prod.ts或release.ts结尾的文件
虽然我试图做的可能不仅仅是得到支持(但?),但对这件事的普遍困惑和不同意见让我觉得我可能遗漏了一些东西。。某处


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

环境文件还不受支持,从build命令传递环境变量可能是目前可行的解决方案


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

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

谢谢你的建议,但还有一个问题-为什么原理图创建environment.ts和environment.prod.ts?我想这是用于web应用程序的。原理图仍处于早期阶段,你可以在repo中作为功能请求提出。是的,我知道web包选项。问题是我不认为该设置可用于在不同的“环境”之间切换。将不得不检查,我认为最新版本的Nativescript可能在这一领域有一些改进抱歉,如果我说的是显而易见的,但只是为了澄清-如果您有一个共享的web/mobile项目,则需要Webpack构建设置,因为在Webpack捆绑过程中,Nativescript特定的文件名称中包含.tns正在正确绑定以替换其特定于web的对应项。您是否尝试创建environment.tns.ts和environment.prod.tns.ts?我打赌web包绑定过程将在本机生成过程中正确使用它们。如果这起作用并且您需要经常这样做,您可以更改原理图以自动为您生成这些文件