Skip to content

Latest commit

 

History

History
66 lines (50 loc) · 1.87 KB

README.md

File metadata and controls

66 lines (50 loc) · 1.87 KB

vite-plugin-bundled-entry npm

Brought to you by
‹div›RIOTS ‹div›RIOTS

Purpose

Vite goes to great length not to bundle anything (in dev), but there are cases where you've got no choice but to bundle. Some examples are:

  • worker (web/shared/service) which need to run as IIFE and not {type: 'module} (e.g. using importScripts)
  • JS entry point which needs to be available dynamically at runtime (e.g. in an iframe)

Installation

npm install --save-dev vite-plugin-bundled-entry

Usage

Add it to vite.config.js

import bundledEntryPlugin from 'vite-plugin-bundled-entry';

export default {
  plugins: [bundledEntryPlugin({
    id: 'some_virtual_id',
    outFile: '/assets/mybundle.[hash].js',
    entryPoint: 'src/path/to/entryfile.js',
    esbuildOptions: {
      // (optional) esbuild options to use for bundling
      minify: process.env.NODE_ENV === 'production',
      format: 'iife', // default "esm"
    },
    transform(code) {
      // (optional) transform to apply on generated bundle
    }
  })]
}

In your code

import url from 'some_virtual_id?url';
// will be /assets/mybundle.[hash].js (with hash placeholder replaced in build mode)

function createWorker() {
  return new Worker(url);
}

License

MIT

Copyright (c) 2021-present,

Riots