Skip to content

kudashevs/vite-plugin-strip-code

Repository files navigation

Vite Plugin Strip Code test workflow

The vite-plugin-strip-code strips marked blocks from any type of code.

Install

# NPM
npm install --save-dev vite-plugin-strip-code
# Yarn
yarn add --dev vite-plugin-strip-code

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 start, end, prefix, suffix and optional replacement. These values are represented by a string or an object with the following properties:

start: 'dev-start'             # a string defines a name for the start tag (unique)
end: 'dev-end'                 # a string defines a name for the end tag (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 start, end, prefix and suffix values.

Usage example

For example, suppose the task is to strip 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 strips 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 StripCode from 'vite-plugin-strip-code';

export default defineConfig({
  plugins: [
    StripCode({
      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 */
    // dev-start
    if (bar instanceof Bar !== true) {
        throw new Error('makeFoo: bar param must be an instance of Bar');
    }
    // dev-end
    // dev-start
    if (baz instanceof Baz !== true) {
        throw new Error('makeFoo: baz param must be an instance of Baz');
    }
    // dev-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.