Is there a way to configure package.json to run a different npm start
script based on context? For example, I would like to run DEBUG=http nodemon app.js
when I am developing. But, I would like to run node app.js
on production.
Asked
Active
Viewed 110 times
0

user2066880
- 4,825
- 9
- 38
- 64
-
Create a bash script? After all you're just writing bash. Or create two different start actions. – elclanrs Jul 15 '14 at 03:39
1 Answers
1
Create a new file (e.g. server.js) and insert your app.js content.
Use this code sample inside of app.js
var sys = require('sys')
var exec = require('child_process').exec;
function puts(error, stdout, stderr) { sys.puts(stdout) }
var isDev = // Check if on dev machine
if(isDev){
exec("DEBUG=http nodemon server.js", puts);
} else {
exec("node server.js", puts);
}

medokin
- 610
- 9
- 21
-
Thanks, I'd like to also add that with express, the default environment mode is "development". This can be changed via `app.set('env', 'production');` – user2066880 Jul 16 '14 at 00:44
-
Do it in your server.js via http://stackoverflow.com/questions/4870328/how-to-read-environment-variable-in-node-js You should set env variables on your system and check it in your programm. – medokin Jul 16 '14 at 10:05