在nativescript中传递环境因变量&;角2

在nativescript中传递环境因变量&;角2,nativescript,angular2-nativescript,Nativescript,Angular2 Nativescript,我正在使用NativeScript(2.3.0)和Angular2(2.0.0)构建一个移动应用程序 我正在努力使环境变量不在源代码中,因为它们是根据环境加载的(dev/test/prod) 理想情况下,我希望有专门的文件来保存它们(.env.dev) .env.test.env.prod)但我对任何有效的解决方案都持开放态度 我找不到任何帮助,无论是原生脚本文档还是谷歌搜索 经过一些研究,我得到了一个解决方案,并将其发布以供将来参考: 受此启发: 这一切都是关于在全局命名空间中发布变量,并使用

我正在使用NativeScript(2.3.0)和Angular2(2.0.0)构建一个移动应用程序

我正在努力使环境变量不在源代码中,因为它们是根据环境加载的(dev/test/prod)

理想情况下,我希望有专门的文件来保存它们(.env.dev) .env.test.env.prod)但我对任何有效的解决方案都持开放态度


我找不到任何帮助,无论是原生脚本文档还是谷歌搜索

经过一些研究,我得到了一个解决方案,并将其发布以供将来参考:

受此启发:

这一切都是关于在全局命名空间中发布变量,并使用Webpack通过
新建Webpack.DefinePlugin
()覆盖它们

分步指南:

  • 将网页包安装为NS模块:
    tns安装网页包
    (更多信息)
  • 将Webpack安装为node_模块:
    npm安装--保存开发人员Webpack
    (我知道这似乎是多余的,但这是我发现的唯一可以从Webpack.config.js访问Webpack对象的方法)

  • 在webpack.config.js中按以下方式修改:(省略了其他不相关的配置)

/app
文件夹中创建以下文件,旨在用全局变量填充全局名称空间(如上所述,它们将被Webpack覆盖)

global environment.ts

// Extra variables that live on Global that will be replaced by webpack DefinePlugin
declare var ENV: string;
declare var HMR: boolean;
declare var API_URL: string;

interface GlobalEnvironment {
    ENV;
    HMR;
    API_URL;
}
完成了

也许你有更好的方法/改进方法。我很高兴听到他们

// Extra variables that live on Global that will be replaced by webpack DefinePlugin
declare var ENV: string;
declare var HMR: boolean;
declare var API_URL: string;

interface GlobalEnvironment {
    ENV;
    HMR;
    API_URL;
}