Skip to content

A vite plugin that removes marked blocks from any code processed by vite.

License

Notifications You must be signed in to change notification settings

kudashevs/vite-plugin-remove-blocks

Repository files navigation

Vite Plugin Remove Blocks test workflow

The vite-plugin-remove-blocks removes marked blocks from any type of code.

Install

# NPM
npm install --save-dev vite-plugin-remove-blocks
# Yarn
yarn add --dev vite-plugin-remove-blocks

Options

ignoreNodeModules is a boolean that defines whether to process the node_modules folder.

blocks is an array of blocks' representations. Each element of this array describes a unique pair of tags with name, prefix, suffix and optional replacement. These values are represented by a string or an object with the following properties:

name: 'devblock'               # a string defines a name for start/end tags (unique)
prefix: '/*'                   # a string defines the beginning of a tag
suffix: '*/'                   # a string defines the end of a tag
replacement: 'optional'        # a string defines a substitution for a removed block

The plugin supports zero config. When no options are provided, it uses default name, prefix and suffix values.

Usage example

For example, suppose the task is to remove some debug information and non-production code from this code sample.

function makeFoo(bar, baz) {
    console.log('creating Foo'); 
    
    if (bar instanceof Bar !== true) {
        throw new Error('makeFoo: bar param must be an instance of Bar');
    }
    
    if (baz instanceof Baz !== true) {
        throw new Error('makeFoo: baz param must be an instance of Baz');
    }
    
    return new Foo(bar, baz);
}

The plugin removes blocks of code marked with two paired tags (a block). A block is represented by a string or an object with the properties described in "Options" above. Let's identify two different blocks and describe them in the configuration:

// vite.config.js 
import {defineConfig} from 'vite';
import RemoveBlocks from 'vite-plugin-remove-blocks';

export default defineConfig({
  plugins: [
    RemoveBlocks({
      blocks: [
        'debug',
        {
          name: 'development',
          prefix: '//',
          suffix: '',
        },
      ],
    }),
  ],
})

Once the blocks are described in the configuration, the unwanted areas of code can be marked in the code:

function makeFoo(bar, baz) {
    /* debug:start */ console.log('creating Foo'); /* debug:end */
    // development:start
    if (bar instanceof Bar !== true) {
        throw new Error('makeFoo: bar param must be an instance of Bar');
    }
    // development:end
    // development:start
    if (baz instanceof Baz !== true) {
        throw new Error('makeFoo: baz param must be an instance of Baz');
    }
    // development:end
    // This code will remain
    return new Foo(bar, baz);
}

After the building process, the marked blocks will be completely removed.

function makeFoo(bar, baz) {
    // This code will remain
    return new Foo(bar, baz);
}

License

The MIT License (MIT). Please see the License file for more information.

About

A vite plugin that removes marked blocks from any code processed by vite.

Topics

Resources

License

Stars

Watchers

Forks