babel-plugin-inline-replace-variables

babel plugin to inline replace variables

Usage no npm install needed!

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

README

babel-plugin-inline-replace-variables

Build Status

It replace an Identifier to a literial (LVal), if you want to transfrom a identifier to another identifier, you can see: babel-plugin-replace-identifiers

Usage

npm i babel-plugin-inline-replace-variables --save-dev

configure in .babelrc(should transfer to json format) or any babel queries:

{
  plugins: [
    ['inline-replace-variables', {
      "__SERVER__": true,
      "__VERSION__": "v1.2.3"
    }]
  ]
}

EFFECT:

if (__SERVER__) {
  console.log('this is server, version: %s', __VERSION__)
} else {
  alert('this is browser')
}

will be transformed to

if (true) {
  console.log('this is server, version: %s', "v1.2.3")
} else {
  alert('this is browser')
}

Support Replace With Expression:

{
  plugins: [
    ['inline-replace-variables', {
      "__TYPE__": {
        type: 'node',
        replacement: 'process.env.NODE_ENV'
      }
    }]
  ]
}

EFFECT

if (__TYPE__) {
  // code
}

to

if (process.env.NODE_ENV) {
  // code
}

Also support babel AST Node

const t = require('babel-types');
const nodeEnv = t.memberExpression(t.memberExpression(t.identifier('process'), t.identifier('env')), t.identifier('NODE_ENV'));

{
  plugins: [
    ['inline-replace-variables', {
      "__TYPE__": nodeEnv
    }]
  ]
}

EFFECT

The effect is the same above.

tip:

Version 1.0.1 fix the misspelling of 'varibles' to 'variables'

so babel-plugin-inline-replace-varibles is deprecated, you should instead it of babel-plugin-inline-replace-variables

Authors: https://github.com/wssgcg1213, https://github.com/rtsao