JSPM

unplugin-embed

0.0.3
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • 0
  • Score
    100M100P100Q12485F
  • License MIT

embeds any file as a base64 string into the source code

Package Exports

  • unplugin-embed
  • unplugin-embed/astro
  • unplugin-embed/esbuild
  • unplugin-embed/farm
  • unplugin-embed/nuxt
  • unplugin-embed/rollup
  • unplugin-embed/rspack
  • unplugin-embed/types
  • unplugin-embed/vite
  • unplugin-embed/webpack

Readme

unplugin-embed

A plugin that embeds any file as a base64 string into the source code.

Install

npm i -D unplugin-embed
yarn add  -D unplugin-embed
pnpm add -D unplugin-embed

Configuration

Vite
// vite.config.ts
import Embed from 'unplugin-embed/vite'

export default defineConfig({
  plugins: [
    Embed(),
  ],
})


Rollup
// rollup.config.js
import Embed from 'unplugin-embed/rollup'

export default {
  plugins: [
    Embed(),
  ],
}


Webpack
// webpack.config.js
module.exports = {
  /* ... */
  plugins: [
    require('unplugin-embed/webpack').default(),
  ],
}


Rspack
// rspack.config.js
module.exports = {
  /* ... */
  plugins: [
    require('unplugin-embed/rspack').default(),
  ],
}


webpack
// vue.config.js
module.exports = {
  /* ... */
  plugins: [
    require('unplugin-embed/webpack').default(),
  ],
}

You can also rename the Vue configuration file to vue.config.mjs and use static import syntax (you should use latest @vue/cli-service ^5.0.8):

// vue.config.mjs
import Embed from 'unplugin-embed/webpack'

export default {
  configureWebpack: {
    plugins: [
      Embed(),
    ],
  },
}


esbuild
// esbuild.config.js
import { build } from 'esbuild'
import Embed from 'unplugin-embed/esbuild'

build({
  /* ... */
  plugins: [
    Embed({
      /* options */
    }),
  ],
})


astro
// astro.config.mjs
import AutoImport from 'unplugin-auto-import/astro'

export default defineConfig({
  integrations: [
    AutoImport({
      /* options */
    })
  ],
})


Usage

  • use ?embed to embed the file as a base64 string
import fontData from './font.ttf?embed'
// fontData is a base64 string
  • use options={filter:(id)=>id.endsWith('.ttf')} to filter the files to embed
// vite.config.ts

// src/index.ts
import fontData from './font.ttf'

export default defineConfig({
  plugins: [
    Embed({
      filter: (id: string) => id.endsWith('.ttf')
    }),
  ],
})
// fontData is a base64 string