[SOLVED] Set environment variable through Typescript script

Issue

I want to create a hash on build and set is as environment variable. It should be accessible by node.

Firstly I wrote a bash script, exported the environment variable in the script and sourced it in the package.json.
Problem is node doesn’t know the source command.
Now I rewrote the script in Typescript (due to the whole project using TS not JS).
In the script I set the variable as follows:

process.env.VARIABLE = hashFunction(path);

The function is called through a script in package.json

"hash": "ts-node path/to/script.ts"

The function works as it should, but the environment variable is not set. Can someone help me to resolve this? Is it possible to return the string outside of the script and set it from there?

If possible i’d like to not use an external package.

Thank you 🙂

Solution

Can’t (easily) change environment variables for parent process

You can change/set the environment for the currently running process. That means that when ts-node runs your program, you are changing the environment variables for your script and for ts-node.

After your script is finished running, ts-node stops, and the environment changes are lost. They don’t get passed back to the shell.

Changing another process’s environment

Changing the environment variables for the parent process (the shell) is a much more complicated process and depends on your OS and upon having the correct permissions. For linux, one such technique is listed here. In Windows, you can find some hints by looking at this question.

Other options

Your other option might be to just return a string that your shell understands, and run that.

Answered By – Codebling

Answer Checked By – Marilyn (BugsFixing Volunteer)

Leave a Reply

Your email address will not be published. Required fields are marked *