Javascript 角度-部署期间的生产环境变量

Javascript 角度-部署期间的生产环境变量,javascript,angular,Javascript,Angular,根据angular文档,我了解生产密钥可以放在“environment.prod.ts”中。然而,我不太清楚的是,在构建阶段,什么时候是: 最终构建中是否包含变量?如果是的话,这难道不会让原本应该是秘密的env变量公开吗 如果构建中包含这些变量,那么部署应用程序的生产版本的正确方法是什么?(假设该应用程序将托管在firebase上) 谢谢:)关于第一个问题: 如果你有一些关键的东西,你必须把它添加到你的后端,而不是前端,例如,大多数密钥都应该在那里 第二个问题: 通常我这样做 例如,在envir

根据angular文档,我了解生产密钥可以放在“environment.prod.ts”中。然而,我不太清楚的是,在构建阶段,什么时候是:

  • 最终构建中是否包含变量?如果是的话,这难道不会让原本应该是秘密的env变量公开吗

  • 如果构建中包含这些变量,那么部署应用程序的生产版本的正确方法是什么?(假设该应用程序将托管在firebase上)

  • 谢谢:)

    关于第一个问题: 如果你有一些关键的东西,你必须把它添加到你的后端,而不是前端,例如,大多数密钥都应该在那里

    第二个问题: 通常我这样做

    例如,在environment.prod.ts中,我放置了占位符,而不是实际值

    {
       api_url: '#!api_url!#'
    }
    
    因此它将由这些值构建,在部署时,我将在
    main*.js
    文件中用实际值替换这些占位符

    如果您已经自动化了部署,那么在
    azuredevops
    Octapus
    中会有一些任务,当然
    Jenkins
    也应该有一些任务

    通过这样做,您也将能够将相同的包部署到不同的环境中,因为在每次部署之前都会用值替换令牌


    拥有占位符的另一个原因是您没有将他们保留在源代码管理中,例如,开发团队中的任何机构都无权访问prod配置,并且它掌握在devops工程师手中

    除了Reza给出的漂亮答案之外,这里还有一个类似的问题,关于这个主题有一篇非常好的文章。使用这样的占位符有什么好处?@Cerbrus您可以将同一个包部署到不同的环境中,例如,同一个包转到
    QA
    ,如果它被签出,则转到
    UAT
    ,然后再转到
    Prod
    。由于替换值发生在每个部署上,而不是在构建中,
    environment..ts
    的重点不在于拥有用于不同环境的单独构建配置,因此您不必进行“手动”(自动)替换?@Cerbrus是的,这是另一种方式,其缺点是将值保留在源代码管理中,而且构建时间会增加,因为你需要为多个环境构建多次,最后一段更有意义,但是我会考虑拥有一个单独的配置文件…