在构建期间使用打字稿转换环境变量

djt*_*oms 6 typescript

尝试找到一种干净的方法来process.env使用tsc. 基本上我试图使用打字稿编译器来实现babel-plugin-transform-inline-environment-variables所做的事情。

网络上的大多数问题都涉及让编译器正常运行,其他解决方案推荐使用诸如存储环境变量以供以后使用之process.env类的工具。dotenv

当环境变量不包含敏感信息时,这特别有用。例子:

export const VERSION = process.env.VERSION;
Run Code Online (Sandbox Code Playgroud)

建造:

export const VERSION = process.env.VERSION;
Run Code Online (Sandbox Code Playgroud)

期望的输出:

VERSION='1.2.3' npx tsc --project tsconfig.json
Run Code Online (Sandbox Code Playgroud)

djt*_*oms 5

对于路人来说,我可以通过几种不同的方式解决这个问题:

  1. 使用 babel 你可以使用babel-plugin-transform-inline-environment-variables
  2. 单独使用时,tsc您需要使用一些外部程序(如 、 或其他脚本)对转译代码进行预处理/awksed处理
  3. 使用pikapika-plugin-inline-env为此写的
  4. Webpack 有一个插件:https://webpack.js.org/plugins/environment-plugin/
  5. Rollup 有一个插件:https://www.npmjs.com/package/rollup-plugin-inject-process-env