MChan
MChan

Reputation: 7162

Setting process.env var in package.json

I am trying to set and retrieve node app process.env vars using package.json, so by researching the issue, I've found an example to set / retrieve process.env through the 'config' section, so I added a new config section as shown below :

"config" : { "var1" : "test", "var2" : "test2", "var3" : "test3" },

But I couldn't access any of the above vars from server.js using for example:

console.log(process.env.npm_package_config_var1); 

So I was wondering how I can set / retrieve process.env var using package.json? Thanks

*I am using npm 4.4.1, node 7.4.0 and I run the app using (npm run dev)

Upvotes: 8

Views: 49849

Answers (4)

Paul Bartlett
Paul Bartlett

Reputation: 831

This will only work if you start your application using npm:

so have:

"scripts": {
    "start": "node server.js"
},
"config" : { "var1" : "test", "var2" : "test2", "var3" : "test3" }

then:

npm run start

and within server.js this will display the variable correctly:

console.log(process.env.npm_package_config_var1); 

Upvotes: 1

Flash
Flash

Reputation: 1000

You cannot just set environment variables in package.json.

Yes you can.

You may try out node -p process.env as your npm script to inspect your env variable. And ensure that nothing else overwrites your values. Here is another example which works for me.

Upvotes: 7

rsp
rsp

Reputation: 111268

You cannot just set environment variables in package.json.

You can set them in your script sections using:

"scripts": {
  "start": "ENV_VAR=abc node app.js",
},

or:

 "scripts": {
  "start": "cross-env ENV_VAR=abc node app.js",
},

using the cross-env module. See:

Environment variables are something that your programs get at runtime, not something stored in a config - unless you use something like dotenv, see:

but this is using the .env file, not package.json.

Upvotes: 20

Steeve Pitis
Steeve Pitis

Reputation: 4443

I don't really understand, what are you trying to do.

But if you want to retrieve env variables you have to do define your dev script in your package.json like this : NODE_ENV=dev node index.js

Then fetch your env with : process.env.NODE_ENV

Upvotes: 3

Related Questions