/cross-env

Cross platform setting of environment scripts

Primary LanguageJavaScriptMIT LicenseMIT

cross-env

Status: npm version npm downloads Build Status Code Coverage Donate

This micro-lib allows you to provide a script which sets an environment using unix style and have it work on windows too

Usage

I use this in my npm scripts:

{
  "scripts": {
    "build": "cross-env NODE_ENV=production webpack --config build/webpack.config.js"
  }
}

Ultimately, the command that is executed (using spawn) is:

webpack --config build/webpack.config.js

The NODE_ENV environment variable will be set by cross-env

Why?

Windows will choke when you set environment variables with NODE_ENV=production like that. This makes it so you can have a single command without worrying about setting the environment variable properly for the platform. Just set it like you would if it's running on a unix system, and cross-env will take care of setting it properly.

Known limitations

If you plan to do something like this:

cross-env FOO=bar && echo $FOO

And expect it to output bar you're going to be sad, for two reasons:

  1. Technically, those will run as two separate commands, so even though FOO will properly be set to bar in the first command, the echo $FOO will not.
  2. When echo $FOO runs, the $FOO variable is replaced with the variable value, before it's even passed to cross-env (though, as indicated in #1, that doesn't happen anyway)

The main use case for this package is to simply run another script which will (itself) respond to the environment variable. These limitations are not a problem in that scenario (like in the example).

LICENSE

MIT