babel-plugin-inline-dotenv

Load your `.env` file and replace `process.env.MY_VARIABLE` with the value you set.

Usage no npm install needed!

<script type="module">
  import babelPluginInlineDotenv from 'https://cdn.skypack.dev/babel-plugin-inline-dotenv';
</script>

README

babel-plugin-inline-dotenv

Test

Load your .env file and replace process.env.MY_VARIABLE with the value you set.

tl;dr

It actually replaces process.env.MY_VARIABLE with:

process && process.env && process.env.MY_VARIABLE || 'value assigned to variable in dotenv'

This way, if the value is available at runtime it will be used instead.

Installation

$ npm install babel-plugin-inline-dotenv

Usage

Via .babelrc (Recommended)

Without options:

.babelrc

{
  "plugins": ["inline-dotenv"]
}

With options:

{
  "plugins": [["inline-dotenv",{
    path: 'path/to/.env' // See motdotla/dotenv for more options
  }]]
}

To replace with env value without process && process.env && process.env.MY_VARIABLE || safety:

{
  "plugins": [["inline-dotenv",{
    unsafe: true
  }]]
}

The plugin support 3 mode to read the env var from the system :

{
  "plugins": [["inline-dotenv",{
    systemVar: 'all' | 'overwrite' | 'disable'
  }]]
}
  • all default, every env var found in process.env will be used

    ⚠️ This could leak super secret stuffs !

  • overwrite, the value in process.env will overwrite the one present in .env only. Your .env file act as a whitelist

  • disable, the process.env will not be used at all

Via CLI

$ babel --plugins inline-dotenv script.js

Via Node API

require("babel-core").transform("code", {
  plugins: ["inline-dotenv"]
});