rbxts-transform-env
Transformer for Roblox TypeScript compiler that allows getting values of process.env as string literals
Installation
npm i rbxts-transform-env
, then in your tsconfig.json:
"compilerOptions": {
...
"plugins": [
{
"transform": "rbxts-transform-env"
}
],
}
Usage
$NODE_ENV
This will change to whatever the value of NODE_ENV
is in your environment. If no value is set, this is defined in the configuration options above under defaultEnvironment
, or "production"
if no such value is present.
$env
This contains three functions of which can be used to obtain environment variables
$env.string( variable [, defaultValue] )
This will attempt to grab the given variable
from the environment, otherwise will provide the default value. (undefined
if no default value is given)
$env.boolean( variable )
This can be used to get a boolean environment variable, or check if an environment variable exists.
If the value is not (case-insensitive) false
, but is set it will be considered true
. This can be used to also check if environment variables exist.
$env.number( variable [, defaultValue] )
This will attempt to grab the given variable
from the environment and parse it as a number, otherwise will provide the default value. (undefined
if no default value is given)
Behaviours
If there is an if statement, an attempt will be made to short-circuit the if statement. e.g.
if ($NODE_ENV === "production") {
// Code here
}
Any code in this if statement will not render (unless an else is specified) if the environment is not production.
This also applies to $env.boolean
. Currently $env.string
and $env.number
do not shortcut, but this may change in future.
Changes from 1.0 to 2.0
- New transformation process (should be faster)
- Removed
$ifEnv
. This should be doable via an if statement now. $env
has now been split up into$env.string
,$env.number
and$env.boolean
.$env
is no longer callable.- The reason for this was the old behaviour of relying on the template argument for typing was a hidden "gotcha" that had issues. This is much more explicit.
Versions
Below is a matrix of versions to roblox-ts versions. This should be approximately correct for the older versions.
roblox-ts | rbxts-transform-env | typescript |
---|---|---|
3.0.0 |
3.0.0 (latest ) |
~5.5.3 |
2.2.0 |
2.2.0 (latest ) |
~5.2.2 |
2.1.x |
2.1.0 (beta ) |
~4.9.5 |
2.0.x |
2.0.0 |
~4.8.2 |
≥ 1.3.0 && ≤ 1.3.3 |
1.1.0-ts4.5 |
~4.5.5 |
= 1.2.9 |
1.1.0-ts4.4 |
~4.4 |