babel-plugin-nukable-import

Babel plugin for nuking bindings from imports


Keywords
babel-plugin
License
MIT
Install
npm install babel-plugin-nukable-import@0.4.2

Documentation

Build Status

Allows you to remove bindings from a specific import declaration source. The source is also used to remove any exports as well.

Example

import {
  expectStackChange,
  assert,
  check,
  CheckInterface,
  CheckFunction
} from '@glimmer/debug';

APPEND_OPCODES.app(123, (vm) => {
  let { stack } = vm;
  let mgr = check(stack.pop(), CheckInterface({ didRenderLayout: CheckFunction }));
  mgr.didRenderLayout();
  assert(stack.pop(), 'Must have a value');
  expectStackChange(stack, -2, 'PrimitiveReference');
});

Will be compiled as:

APPEND_OPCODES.app(123, (vm) => {
  let { stack } = vm;
  let mgr = stack.pop();
  mgr.didRenderLayout();
  stack.pop();
});

Basic Usage

{
  moduleIds: true,
  getModuleId() { ... },
  plugins: [
    ['nukable-import', { source: '@glimmer/debug' }]
  ]
}

Advanced Usage

If you need fine grain control over the bindings, you can implement a delegate that will be shown all the bindings that are CallExpressions and Identifiers. Note, this should be used for one-offs like removing a specific binding from from a specific source.

{
  moduleIds: true,
  getModuleId() { ... },
  plugins: [
    ['nukable-import', {
      source: '@glimmer/vm',
      delegate(bindingName, path, types) {
        if (bindingName === 'META_DATA') {
          path.remove();
        }
      }
    }]
  ]
}